問題是我不知道如何在使用平均過濾器時正確地完成數學運算。所有9個內核中的權重值爲1的3x3內核。我得到了一些幫助使用總和部分,但我不知道它是否正常工作,我當然不能建立。我的意思是過濾器是否正確?我需要改變以使其工作?
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat gray_image, convolued_image;
gray_image = imread("C:/1.jpg", CV_LOAD_IMAGE_GRAYSCALE); // Read the file
convolued_image = gray_image;
if(!gray_image.data) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow("RGB Input", CV_WINDOW_AUTOSIZE);
imshow("RGB Input", gray_image);
Mat meanImg;
gray_image.copyTo(meanImg);
namedWindow("meanImg", CV_WINDOW_AUTOSIZE);
imshow("meanImg", meanImg);
waitKey(0);
for (int y = 0; y < gray_image.rows; y++)
{
for (int x = 0; x < gray_image.cols; y++)
{
int intesity = gray_image.at<uchar>(y,x);
int sum = gray_image.at<uchar>(y+1,x+1);
sum = gray_image.at<uchar>(y+1,x);
sum = gray_image.at<uchar>(y+1,x-1);
sum = gray_image.at<uchar>(y,x-1);
sum = gray_image.at<uchar>(y,x+1);
sum = gray_image.at<uchar>(y-1,x-1);
sum = gray_image.at<uchar>(y+1,x);
sum = gray_image.at<uchar>(y+1,x+1);
int mean = sum/9;
meanImg.at<uchar>(y,x) = mean;
}
}
return 0;
}
爲什麼你不能建立?什麼是錯誤? –