#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; }
解释一下代码的主要部分:
-
首先包含OpenCV库的头文件,并使用命名空间cv和std。
-
创建一个VideoCapture对象,并将参数设置为0,表示打开默认的摄像头。
-
检查摄像头是否成功打开。如果失败,则输出错误消息并返回-1。
-
创建一个名为"Camera"的窗口。
-
循环读取摄像头捕捉到的帧,并显示在窗口中。
-
读取一帧图像。使用cap.read函数读取一帧图像,并将其存储在Mat对象frame中。
-
检查是否成功读取到一帧图像。如果失败,则输出错误消息并退出循环。
-
显示图像。使用imshow函数显示图像,并指定窗口标题。
-
等待按键输入。使用waitKey函数等待用户按下按键,并返回按下的键码。
-
按下q键退出循环(这个好像不能用)。
-
释放摄像头资源和所有窗口。在程序结束时,使用cap.release函数释放摄像头资源,并使用destroyAllWindows函数关闭所有窗口。
-
第一次写博客希望大家见谅。