【发布时间】:2011-04-29 02:44:32
【问题描述】:
我是 OpenCV 的初学者,我有一些问题:
如何使用一张图片作为另一张图片的遮罩?
例如,我有一张图片包含空圆圈,而另一张图片包含一个带有内容(非空)和背景的圆圈。
如何在新图像中提取两个图像的共同部分?
我尝试逐个像素地提取来执行 (AND) 操作,但它失败了!
谁能帮我出点主意!
我尝试下面的代码(我在这里找到的),但它产生了错误的结果!
我通过替换尝试了二进制图像
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);
}
}
}
【问题讨论】:
-
如果你展示你的代码真的很有帮助,这样其他人就可以解释你做错了什么。否则,人们只是在为你编写代码。
-
我真的不希望有人给我写这里的代码,我只是需要一些提示,但是既然你提到了,我现在放代码...thanx
标签: c++ image-processing opencv