クロスポストhere同じ機能が異なる結果
これは赤い色で、これらのROIのショーのための私のプライベート関数です。
Mat highlight(Mat srcImg, Mat mask) {
if (srcImg.size != mask.size) {
cout << "Your two images tried to highlight have different SIZE.\n";
exit(1);
}
if (mask.channels() != 1)
cvtColor(mask, mask, COLOR_BGR2GRAY);
if (mask.type() != CV_8UC1)
mask.convertTo(mask, CV_8UC1);
threshold(mask, mask, 0, 255, THRESH_BINARY_INV + THRESH_OTSU);
cvtColor(mask, mask, COLOR_GRAY2BGR);
if (srcImg.channels() != 3)
cvtColor(srcImg, srcImg, COLOR_GRAY2BGR);
if (srcImg.type() != CV_8UC3)
srcImg.convertTo(srcImg, CV_8UC3);
dilate(mask - Scalar(0, 0, 255), mask, Mat(), Point(-1, -1), 2);
return srcImg - mask;
}
これは私のコードです。
#include<opencv.hpp>
using namespace std;
using namespace cv;
Mat highlight(Mat, Mat);
int main() {
Mat emptyImg = imread("test.jpg", 0);
Mat test = emptyImg.clone();
Mat mask(5, 5, CV_8UC1, Scalar(0));
for (int i = 0; i < mask.rows; i++) {
uchar* data = mask.ptr<uchar>(i);
for (int j = 0; j < mask.cols; j++)
if ((i + j) % 2 == 0)
data[j] = 255;
}
resize(mask, mask, emptyImg.size(), 0, 0, INTER_NEAREST);
Mat img1, img2,mask1,mask2;
img1 = highlight(emptyImg, mask);
imshow("img1", img1);
img2 = highlight(test, mask);
imshow("img2", img2);
waitKey();
return 0;
}
これは私のtest imageです。私は非常に混乱しています。私は私の予想として
を次のように異なる結果を取得しますなぜ、img1
とimg2
は全く同じである必要があります。私が見逃しているものはありますか?
ありがとうございました。 – Make