用opencvc++实现的功能为打开摄像头,并可以采集实时图片,(然后读取其中图像的长宽)可选,读取完毕后关闭摄像头,在界面中呈现,
时间: 2024-12-14 09:13:41 浏览: 10
在OpenCV中,你可以使用`cv::VideoCapture`来打开摄像头,并通过`cv::imread`函数来读取实时图片。以下是一个基本的C++代码片段,展示了如何完成这个功能:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 打开摄像头
cv::VideoCapture cap(0); // 使用默认摄像头(序号为0)
if (!cap.isOpened()) {
std::cerr << "Error opening camera" << std::endl;
return -1;
}
cv::namedWindow("Camera Stream", cv::WINDOW_NORMAL); // 创建一个新的窗口
while (true) { // 循环读取摄像头帧
// 读取帧
cv::Mat frame;
cap >> frame; // 使用操作符>>
if (frame.empty()) {
std::cout << "Unable to capture frame." << std::endl;
break;
}
// 获取图片的宽度和高度
int width = frame.cols;
int height = frame.rows;
std::cout << "Frame dimensions: " << width << " x " << height << std::endl;
// 在窗口中显示图像
cv::imshow("Camera Stream", frame);
// 等待按键,按任意键继续下一帧
char key = cv::waitKey(1);
if (key == 27) { // ESC键退出
break;
}
}
// 关闭摄像头和窗口
cap.release();
cv::destroyAllWindows();
return 0;
}
```
在这个例子中,如果捕获到的帧为空(可能是摄像头未连接或错误),程序会跳出循环。每次迭代都会读取新的帧,显示其尺寸并在窗口中更新。
阅读全文