OpenCV 3.X 获取摄像头友好名称 windows C++
时间: 2024-10-22 09:27:26 浏览: 54
在OpenCV 3.x for Windows环境中,如果你想通过C++获取摄像头的友好名称,可以使用VideoCapture类及其构造函数。下面是一个简单的示例:
```cpp
#include <opencv2/opencv.hpp>
#include <windows.h> // 引入Windows API头文件
int main() {
cv::CascadeClassifier face_cascade; // 非常重要的一步,这里假设你需要人脸检测
// 打开第一个可用的摄像头
int cameraIndex = 0;
cv::VideoCapture cap(cameraIndex);
if (!cap.isOpened()) {
std::cout << "无法打开摄像头" << std::endl;
return -1;
}
// 获取摄像头设备列表
const char** devices;
size_t numDevices = cap.get(cv::CAP_PROP_FRAME_COUNT);
devices = (const char**)malloc(sizeof(const char*) * numDevices);
cap.queryDeviceList(devices, numDevices);
try {
for (size_t i = 0; i < numDevices; ++i) {
std::cout << "摄像头 " << i+1 << ": " << devices[i] << std::endl;
}
} finally {
free(devices); // 释放内存
}
// 现在你可以选择特定的摄像头名称,比如 devices[0]
// 或者根据用户输入选择
cv::VideoCapture chosenCap(devices[0]); // 使用你选择的摄像头
// 然后继续处理视频流...
return 0;
}
```
在这个示例中,`cv::CAP_PROP_FRAME_COUNT`是一个属性,用于获取设备的数量,然后循环遍历并打印出每个设备的名称。
阅读全文