#include #include #include #define H 265 #define W 272 using namespace std; int main() { unsigned char *grey; grey = new unsigned char[H * W]; FILE *f; fopen_s(&f, "./数据/blood.raw", "rb"); if (f) { fread(grey, sizeof(unsigned char), H * W, f); fclose(f); } else { cout << "无法打开文件" << endl; return 0; } fread(grey, sizeof(unsigned char), H * W, f); fclose(f); // 模板 int tw = 3; int th = 3; int template1[9]={0,1,0,1,-4,1,0,1,0}; int i,j,k,l; unsigned char *result_grey; result_grey = new unsigned char[H * W]; for (i = 0; i < H * W; i++) { result_grey[i] = 255; } for (i = th / 2; i < H - th / 2; i++) { for (j = tw / 2; j < W - tw / 2; j++) { // 应用拉普拉斯模板 int sum = 0; for (k = -th / 2; k <= th / 2; k++) { for (l = -tw / 2; l <= tw / 2; l++) { sum += grey[(i + k) * W + (j + l)] * template1[(k + th / 2) * tw + (l + tw / 2)]; } } if (sum > 100) { result_grey[i * W + j] = 0; } else { result_grey[i * W + j] = 255; } } } FILE *fnew; fopen_s(&fnew, "./数据/laplacian.raw", "wb"); if (fnew) { fwrite(result_grey, sizeof(unsigned char), H * W, fnew); } else { cout << "创建文件失败" << endl; return 0; } }