我正在Java上使用OpenCV(是的,我知道)来读取图像和蒙版,并将它们合并为一个灰度图像,其中像素浮动在[0,1]范围内,孔像素为-1 (由蒙版的白色部分定义)。
我要逐个像素遍历蒙版,找到白色的。
这是我的代码:
import static java.awt.Color.white;
public static Mat merge(Mat orig, Mat mask) {
Mat img = new Mat(orig.rows(), orig.cols(), CV_32F); // Create Mat of float values
float[] holePixel = {-1};
for (int i = 0; i < orig.rows(); i++) {
for (int j = 0; j < orig.cols(); j++) {
if (mask.get(i, j).equals(white)) {// If pixel is part of hole in mask
img.put(i, j, holePixel);
System.out.println("FOUND A WHITE"); // <--------- this print
} else {
double[] pixel = orig.get(i, j);
float grayVal = (float) ((pixel[0] + pixel[1] + pixel[2]) / 3) / 255; // Create grayscale value
float[] grayPix = {grayVal};
img.put(i, j, grayPix);
}
}
}
return img;
}
我把那张照片弄清楚是发现还是发现白色像素。没有。我的面具有白色像素。 似乎我的比较方式无效,应该怎么用?
谢谢。