使用sharpen函数锐化灰度图像,但是只是锐化了三分之一,这个是教程的代码,看不出来哪里错了,求大佬们指导下。
代码如下:
#include//opencv2的核心头文件
#include//包括图形界面和视频图像处理的头文件
#include//每个c++程序必须包含的头文件
#include
void sharpen(const cv::Mat &image, cv::Mat &result)
{
result.create(image.size(), image.type()); // allocate if necessary
for (int j = 1; j<image.rows - 1; j++) { // for all rows (except first and last)
const uchar* previous = image.ptr<const uchar>(j - 1); // previous row
const uchar* current = image.ptr<const uchar>(j); // current row
const uchar* next = image.ptr<const uchar>(j + 1); // next row
uchar* output = result.ptr<uchar>(j); // output row
for (int i = 1; i<image.cols - 1; i++) {
*output++ = cv::saturate_cast<uchar>(5 * current[i] - current[i - 1] - current[i + 1] - previous[i] - next[i]);
// output[i]= cv::saturate_cast<uchar>(5*current[i]-current[i-1]-current[i+1]-previous[i]-next[i]);
}
}
// Set the unprocess pixels to 0
result.row(0).setTo(cv::Scalar(0));
result.row(result.rows - 1).setTo(cv::Scalar(0));
result.col(0).setTo(cv::Scalar(0));
result.col(result.cols - 1).setTo(cv::Scalar(0));
}
int main()
{
cv::Mat result;
cv::Mat image;
image = cv::imread("8.jpg");
sharpen(image,result );
cv::namedWindow("image");
cv::imshow("image", image);
cv::namedWindow("result");
cv::imshow("result", result);
cvWaitKey(0);
return 0;
}