在视频流(OpenCV)中看不到绘制的矩形

时间:2016-09-04 18:10:51

标签: c++ opencv

我正在尝试制作一个简单的程序,在来自我的网络摄像头的视频流上绘制一个矩形。以下代码编译并运行,但矩形不可见。我尝试了各种线条厚度,颜色和位置;并尝试将矩形简单地放在图像而不是视频流上。

在查看了示例和教程以及OpenCV文档后,我仍然无法弄明白。如果有人可以协助我使矩形可见,那将非常感激。

#include <opencv2/video.hpp>
#include <opencv2/highgui.hpp>

using namespace cv;

VideoCapture vid(0);
Mat frame;

int main()
{
    while(true)
    {
        vid.read(frame);
        imshow("Webcam", frame);
        rectangle(frame, Point(100, 100), Point(300, 300), Scalar(255), 10, 8, 0);

        if (waitKey(30) == 27)
            break;
    }


}

1 个答案:

答案 0 :(得分:1)

只需在之前绘制矩形,即可显示图像:

#include <opencv2\opencv.hpp> // It's just easier to #include only this
using namespace cv;

int main() {

    // Don't use global variables if they are not needed!
    VideoCapture vid(0); 
    Mat frame;
    while(true)  
    {
        // Read frame
        vid.read(frame);

        // Draw rectangle
        rectangle(frame, Point(100, 100), Point(300, 300), Scalar(255, 0, 0) /*blue*/, 10, 8, 0);
        // Show image
        imshow("Webcam", frame);

        if ((waitKey(30) & 0xFF) == 27) { // for portability
            break;
        }
    }
}