こんにちは、私はまだ始まったばかりのC++/OpenCVの中央値のコード私は混乱CINDAだ を書き込もうと......エラー++ OpenCVの私の非常に最初のコード(メディアンフィルタ)
EDIT2: OK感謝親愛なる友人に私の最初のエラーが修正されました 今これは私の新しいエラーです:| 9要素のMatファイルをソートしたい。私は他のタイプのウィンドウ Matファイルを使用することはできますか?どのように私はエラーは、この行を参照corectly
それを並べ替えることができます。 のstd ::ソート(window.begin()、window.endを()); エラー: 'window'でメンバ 'begin'のリクエストがあります。これは非クラスタイプの 'cv :: Mat [9]'です。 | 36 | error: 'window'のメンバ 'end'に対する要求。非クラス型の 'cv :: Mat [9]' |
私はMathWorks社のMATLABをexpedと私は、C++での完全なnoobのだけど、これは私のコードです:
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 red = intensity.val [2]; ' –
Ibrahim
ありがとう、この作品 "img.at(y、x);"今、ソートの問題があり、ソートされた9要素ベクトルの中央値が5要素ではないことに気付きました! :| –
もちろん、ソートされた9要素ベクトルの中央値、その5番目の要素(もちろんインデックス4)。それ以外に何が必要ですか? – Piglet