您好我剛開始C++/OPENCV並試圖寫一箇中位數代碼 我很困惑信達......錯誤在C++ OpenCV的我的第一個碼(中值濾波器)
EDIT2: 好的,謝謝親愛的朋友,我的第一個錯誤被糾正 現在這是我的新錯誤: 我想排序9元素Mat文件。我可以使用其他類型的窗口不是Mat文件?我怎麼能corectly排序它
錯誤指的是這一行: 的std ::排序(window.begin(),window.end()); 錯誤:請求'window'中的成員'begin',它是非類類型'cv :: Mat [9]'| | 36 |錯誤:請求'窗口'中的成員'end',它是非類類型'cv :: Mat [9]'|
我的口供MATLAB和我在C++中一個完整的小白,這是我的代碼:
using namespace std;
using namespace cv;
Mat img_gray,img;
int main()
{
img = imread("6.jpg", IMREAD_COLOR); // Load an image
if(img.empty())
{ return -1; }
cvtColor(img, img_gray, COLOR_BGR2GRAY);
int M = img.rows;
int N = img.cols;
cvNamedWindow("windows",WINDOW_AUTOSIZE);
imshow("windows",img);
for (int m = 2; m < M - 1; ++m)
for (int n = 2; n < N - 1; ++n)
{
int k = 0;
int tmpmedian = 0;
//int window[9]={0};
Mat window[9];
for (int i = m - 1; i < m + 2; ++i){
for (int j = n - 1; j < n + 2; ++j)
{
window[k++] = img_gray.at<uchar>(i, j);
}
std::sort(window.begin(), window.end());
tmpmedian = window[5];
fimg[m][n] = tmpmedian;
}
}
}
我是一個學生,需要爲我的類項目 我你的反應非常感謝欣賞
可以通過使用**訪問墊變量的像素值img.at(Y,X); **實施例的代碼: 'Vec3b強度= img.at (Y,X); uchar blue = intensity.val [0]; uchar green = intensity.val [1]; UCHAR紅色= intensity.val [2];' –
Ibrahim
感謝的人這個作品 「img.at(Y,X);」很好,現在我遇到了排序問題,並意識到排序後的9個元素的中值不是第5元素! :|當然 –
排序的9-元向量其第五元件(在當然索引4)的中值。它還應該是什麼? – Piglet