2013-08-19 52 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