2013-08-19 50 views
0

我正在写一个应用程序在OpenCV-C Api。我想将2个IplImages混合在一起。我查看了C++中的搅拌机功能,所以我尝试转换以使用此功能。使用搅拌器的图像 - OpenCV

void detail::Blender(A, B, 50); 

其中:

Mat A (imgYellowThresh1,true); 
Mat B (imgblueThresh, true); 

它告诉我改的回报更多的错误时detail应该在前面_然后。任何我可以使用的例子或建议都会非常有帮助。

回答

3

Blender类有点复杂。除非你想要的高级混合功能,一个AddWeighted是混合两个图像的容易的,但通用的方式:

IplImage* A=cvLoadImage("Cup.jpg", 1); 
IplImage* B=cvLoadImage("NoCup.jpg", 1); 
IplImage* Destination=cvCreateImage(cvGetSize(A), IPL_DEPTH_16U, 3); 

double alpha = 0.5; 
double beta = 0.5; 
double gamma = 0.0; //offset 

cvAddWeighted(A,alpha,B,beta,gamma,Destination); 

希望帮助!

+0

谢谢!效果非常好。唯一的事情是我不能使用cvFlip来绘制黑屏而不是视频。所以我用cvAddWeighted(frame,alpha,frame,beta,gamma,frame);然后cvFlip(imgscribble,frame,1); //翻页通常会将视频从凸轮更改为黑屏 – user2645586

+0

对不起,我不确定你想用'flip'做什么:使用'cvFlip(imgscribble,frame,1);'你正在覆盖图像你刚生成; 'frame'现在是'imgscribble'的镜像。 – McMa

+0

框架是从相机输入用于追踪颜色,以绘制线条。 imgScribble保存行数据。我改变了cvAddWeighted(frame,alpha,frame,beta,gamma,imgScribble),它在白色背景上绘制线条,并且混合正在工作,但是线条现在四处飞散,而不是从A点到B点绘制。 – user2645586