【发布时间】:2014-03-07 10:11:10
【问题描述】:
我正在尝试绘制面部轮廓并将其覆盖在网络摄像头图像之上。
但到最后,我认为我以错误的方式使用addWeighted,因为我的程序崩溃了。
能否请您帮助我了解我在使用 imshow 和 addWeighted 时做错了什么?
int main( int argc, const char** argv )
{
VideoCapture camera;
camera.open(0);
if( !camera.isOpened() )
{
cerr << "Could not access the camera!" << endl;
return 1;
}
while( true )
{
Mat cameraFrame;
camera >> cameraFrame;
if( cameraFrame.empty() )
{
cerr << "Could not grab a camera frame!" << endl;
return 1;
}
Mat gray;
cvtColor( cameraFrame, gray, CV_BGR2GRAY );
Size size = cameraFrame.size();
Mat faceOutline = Mat::zeros( size, CV_8UC3 ); // Draw a black canvas.
Scalar color = CV_RGB( 255, 255, 0 ); // Yellow
int thickness = 4;
ellipse( faceOutline, Point(320, 240), Size(320, 240), 0, 0, 360, color, thickness, CV_AA );
addWeighted( gray, 1.0, faceOutline, 0.7, 0, gray, CV_8UC3 );
imshow( "final image", gray );
char keypress = waitKey(20);
if( keypress == 27 ) break;
}
}
【问题讨论】:
标签: opencv image-processing video-capture