使用OpenCV在网络摄像头上绘图

Azi*_*ziz 7 c++ webcam opencv paint draw

我想使用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;
                }
        }
Run Code Online (Sandbox Code Playgroud)

Mar*_*ett 2

绘制一个单独的图像,然后在显示之前立即将其 cvAdd() 到视频图像中