opencv读取摄像头并显示的C++代码

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 创建VideoCapture对象,参数为0表示打开默认摄像头
    VideoCapture cap(0);

    // 检查摄像头是否成功打开
    if (!cap.isOpened())
    {
        cout << "Failed to open camera!" << endl;
        return -1;
    }

    // 创建窗口
    namedWindow("Camera", WINDOW_NORMAL);

    // 循环读取摄像头捕捉到的帧并显示
    while (true)
    {
        // 读取一帧图像
        Mat frame;
        cap.read(frame);

        // 检查是否成功读取到一帧图像
        if (frame.empty())
        {
            cout << "Failed to read frame from camera!" << endl;
            break;
        }

        // 显示图像
        imshow("Camera", frame);

        // 按下q键退出循环
        if (waitKey(1) == 'q')
            break;
    }

    // 释放摄像头资源和所有窗口
    cap.release();
    destroyAllWindows();

    return 0;
}

解释一下代码的主要部分:

  1. 首先包含OpenCV库的头文件,并使用命名空间cv和std。

  2. 创建一个VideoCapture对象,并将参数设置为0,表示打开默认的摄像头。

  3. 检查摄像头是否成功打开。如果失败,则输出错误消息并返回-1。

  4. 创建一个名为"Camera"的窗口。

  5. 循环读取摄像头捕捉到的帧,并显示在窗口中。

  6. 读取一帧图像。使用cap.read函数读取一帧图像,并将其存储在Mat对象frame中。

  7. 检查是否成功读取到一帧图像。如果失败,则输出错误消息并退出循环。

  8. 显示图像。使用imshow函数显示图像,并指定窗口标题。

  9. 等待按键输入。使用waitKey函数等待用户按下按键,并返回按下的键码。

  10. 按下q键退出循环(这个好像不能用)。

  11. 释放摄像头资源和所有窗口。在程序结束时,使用cap.release函数释放摄像头资源,并使用destroyAllWindows函数关闭所有窗口。

  12. 第一次写博客希望大家见谅。

posted @ 2023-03-15 12:47  青杀傻瓜化  阅读(2027)  评论(1)    收藏  举报