我想繪製一張面部輪廓並將其覆蓋在網絡攝像頭圖像的頂部。在圖像頂部顯示輪廓
但是最後,我想我錯誤地使用了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;
}
}
我不知道這是可能相同的相機圖像上「畫」。感謝您的詳細和有益的評論。我嘗試了以前的代碼並使用同一個窗口,現在我可以正確地做到這一點。 – Joshua