Я новичок в OpenCV, и у меня есть несколько вопросов:
Как я могу использовать одно изображение в качестве маски для другого изображения?
Например, у меня есть изображение, содержащее пустой круг, а другое изображение содержит кружок с содержимым (не пустым) и фоном.
Как извлечь общие части двух изображений в новое изображение?
Я пытался извлечь пиксель за пикселем, чтобы выполнить операцию (И), но она не удалась!
Может ли кто-нибудь помочь мне получить некоторые идеи!
Я пробую следующий код (который я нашел здесь), но он дает неправильный результат!
Я пробовал его с двоичным изображениемзаменив
CvScalar bgr = cvScalar(b, g, r);
cvSet2D(mask, iy+y, ix+x, bgr);
на
CvScalar bgr = cvScalar(b);
cvSet2D(mask, iy+y, ix+x, b);
void processImage(IplImage* mask, IplImage* source, int x, int y) {
int b,g,r;
for (int ix=0; ix<source->width; ix++) {
for (int iy=0; iy<source->height; iy++) {
//r = cvGet2D(source, iy, ix).val[2] * cvGet2D(mask, iy, ix).val[2];
//g = cvGet2D(source, iy, ix).val[1] * cvGet2D(mask, iy, ix).val[1];;
b = cvGet2D(source, iy, ix).val[0] * cvGet2D(mask, iy, ix).val[0];
CvScalar bgr = cvScalar(b); //, g, r);
cvSet2D(mask, iy+y, ix+x, b); //gr);
}
}
}