我有透明图像[下面示出],我试图与aishack.in cvOverlayImage()函数来覆盖它,以在其上重合摄像机源叠加透明图像在相机的输出中的OpenCV
cvOverlayImage()
void cvOverlayImage(IplImage* src, IplImage* overlay, CvPoint location, CvScalar S, CvScalar D)
{
int x,y,i;
for(x=0;x < overlay->width -10;x++)
{
if(x+location.x>=src->width) continue;
for(y=0;y < overlay->height -10;y++)
{
if(y+location.y>=src->height) continue;
CvScalar source = cvGet2D(src, y+location.y, x+location.x);
CvScalar over = cvGet2D(overlay, y, x);
CvScalar merged;
for(i=0;i<4;i++)
merged.val[i] = (S.val[i]*source.val[i]+D.val[i]*over.val[i]);
cvSet2D(src, y+location.y, x+location.x, merged);
}
}
}
调用cvOverlayImage()
cvOverlayImage(image_n, neg_img, cvPoint(0, 0), cvScalar(1.0,1.0,1.0,1.0), cvScalar(0.1,0.1,0.1,0.1));
输入到cvOverlayImage()
- 相机捕捉
- 负片图像 从cvOverlayImage 10
输出()
正如你所看到的,我没有得到什么,我need.Please帮助我。
如果你的问题是由于矩形造成图像破坏,你应该只覆盖不是白色的像素(如果背景为白色),否则你应该制作一个图像蒙版(可能是背景上方的阈值)然后完全覆盖这些像素,替换它们下面的像素。这应该会给出更好的结果:) – Adrian
你是对的,但眼镜仍然会出现透明:) – Smash
@Smash我没有得到你所评论的...你试过什么阿德里安波波维奇建议...请帮助代码if你通过它... – Wazzzy