Я использую OpenCV на Java (да, я знаю), чтобы прочитать изображение и маску и объединить их в одно изображение в градациях серого, в котором пиксели плавают в диапазоне [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;
}
Я нанес этот отпечаток, чтобы узнать, найдены ли белые пиксели или нет. Это не так. У моей маски белые пиксели. Кажется, мой способ сравнения не работает, что мне использовать?
Заранее спасибо.