2013-06-04 1 views
0

Я знаю, что это очень просто, но я просто не могу заставить его работать в Opencv. У меня 2 изображения одного размера, один в RGB и другие в черно-белом. Черно-белое изображение получается после некоторой трансформации в Opencv. Теперь я хочу сопоставить черное белое изображение с изображением RGB и сохранить только пиксель, соответствующий белому пикселю в черно-белом изображении. Черный просто отбрасывается.Картирование 2 изображения в Opencv

В C# его легко, но поскольку я использую C++ opencv, я хочу сделать это в openCV. Как мне это сделать?

В C#, как это:

for(i = 0; i < image.lenght; i+=4) 
{ 
if(img_bw != 255) 
image[i] = 0;image[i+1] = 0;image[i+2] = 0; 
} 
+2

Посмотрите к у оператора доступа к элементам Mat [ссылка] (HTTP: // документы. opencv.org/modules/core/doc/basic_structures.html#mat-at) –

+0

Вы можете использовать библиотеку, которая предлагает логическую функцию «и». Я не знаю, работает ли OpenCV, но я знаю, что IPP делает. Использование «и» сохранит цикл for. RGB && BW == what_you_want. Если вы решите сделать это таким образом, вам придется быть осторожным с форматами изображений. – CTZStef

ответ

3
cv::Mat blackAndWhiteMask = ...; // You black and white image 
cv::Mat image = imread("original_image.jpg"); // Your original image 
cv::Mat result; 
image.copyTo(result, blackAndWhiteMask); 
image = result; 
Смежные вопросы