我希望能够在使用OpenCV的摄像头屏幕上进行绘画。由于我正在从摄像头读取数据,因此帧率不断变化,所以我正在尝试找到一种方法来保留或保存当前帧上的绘画,并将其用于下一帧。以下代码允许您在屏幕上绘制,但当它获取下一帧时,绘画就会消失并重新开始。
请问有人可以帮助我吗?谢谢。
请问有人可以帮助我吗?谢谢。
CvCapture *input;
input = cvCaptureFromCAM( 0 );
cvSetMouseCallback("Demo",&on_mouse, 0);
for(;;)
{
frame = cvQueryFrame(input);
if(!image)
{
image = cvCreateImage( cvSize(frame->width, frame->height), IPL_DEPTH_8U, 3);
screenBuffer = cvCreateImage( cvSize(frame->width, frame->height), IPL_DEPTH_8U, 3);
}
cvCopy(frame, image, 0);
if(drawing) //drawing is a global variable
{
cvCircle(image, cvPoint(last_x,last_y), 10,CV_RGB(red,green,blue), -1, CV_AA, 0);
cvCopy(image, screenBuffer, 0);
}
cvShowImage( "Demo", screenBuffer );
}
void on_mouse( int event, int x, int y, int flags, void* param )
{
last_x = x;
last_y = y;
if(event==CV_EVENT_LBUTTONDOWN)
{
drawing = 1;
}
}