OpenCV VideoCapture 设置和获取摄像头参数
生活随笔
收集整理的這篇文章主要介紹了
OpenCV VideoCapture 设置和获取摄像头参数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
適用于VideoCapture打開(kāi)的攝像頭
VideoCapture capture(0);
設(shè)置攝像頭參數(shù)不要隨意修改
1 capture.set(CV_CAP_PROP_FRAME_WIDTH, 1080);//寬度 2 capture.set(CV_CAP_PROP_FRAME_HEIGHT, 960);//高度 3 capture.set(CV_CAP_PROP_FPS, 30);//幀率 幀/秒 4 capture.set(CV_CAP_PROP_BRIGHTNESS, 1);//亮度 1 5 capture.set(CV_CAP_PROP_CONTRAST,40);//對(duì)比度 40 6 capture.set(CV_CAP_PROP_SATURATION, 50);//飽和度 50 7 capture.set(CV_CAP_PROP_HUE, 50);//色調(diào) 50 8 capture.set(CV_CAP_PROP_EXPOSURE, 50);//曝光 50
獲取攝像頭參數(shù)
1 capture.get(CV_CAP_PROP_FRAME_WIDTH); 2 capture.get(CV_CAP_PROP_FRAME_HEIGHT); 3 capture.get(CV_CAP_PROP_FPS); 4 capture.get(CV_CAP_PROP_BRIGHTNESS); 5 capture.get(CV_CAP_PROP_CONTRAST); 6 capture.get(CV_CAP_PROP_SATURATION); 7 capture.get(CV_CAP_PROP_HUE); 8 capture.get(CV_CAP_PROP_EXPOSURE);
源代碼
1 /**
2 @brief OpenCV攝像頭和視頻屬性操作
3 @author
4 @copyright -
5 @version 1.0
6 @data
7 @note -
8 */
9 #include <iostream>
10 #include "opencv2/opencv.hpp"
11
12 using namespace std;
13 using namespace cv;
14
15 const string window_name = "用戶(hù)界面";
16
17 #define USE_CAMERA
18 //#define USE_VIDEO
19
20 int main()
21 {
22 Mat frame;
23
24 double brightness = 0; //亮度
25 double contrast = 0; //對(duì)比度
26 double saturation = 0; //飽和度
27 double hue = 0; //色調(diào)
28 double gain = 0; //增益
29 double exposure = 0; //曝光
30 double white_balance = 0; //白平衡
31
32 double pos_msec = 0; //當(dāng)前視頻位置(ms)
33 double pos_frame = 0; //從0開(kāi)始下一幀的索引
34 double pos_avi_ratio = 0; //視頻中的相對(duì)位置(范圍為0.0到1.0)
35 double frame_width = 0; //視頻幀的像素寬度
36 double frame_height = 0; //視頻幀的像素高度
37 double fps = 0; //幀速率
38 double frame_count = 0; //視頻總幀數(shù)
39 double video_duration = 0.00; //視頻時(shí)長(zhǎng)
40 double format = 0; //格式
41
42 #ifdef USE_VIDEO
43 const string file_name = "201910915314.avi";
44 VideoCapture capture(file_name);
45
46 frame_width = capture.get(cv::CAP_PROP_FRAME_WIDTH);
47 frame_height = capture.get(cv::CAP_PROP_FRAME_HEIGHT);
48 fps = capture.get(cv::CAP_PROP_FPS);
49 frame_count = capture.get(cv::CAP_PROP_FRAME_COUNT);
50 format = capture.get(cv::CAP_PROP_FORMAT);
51 pos_avi_ratio = capture.get(cv::CAP_PROP_POS_AVI_RATIO);
52 video_duration = frame_count / fps;
53
54 cout << "---------------------------------------------" << endl;
55 cout << "視頻中的相對(duì)位置(范圍為0.0到1.0):" << pos_avi_ratio << endl;
56 cout << "視頻幀的像素寬度:" << frame_width << endl;
57 cout << "視頻幀的像素高度:" << frame_height << endl;
58 cout << "錄制視頻的幀速率(幀/秒):" << fps << endl;
59 cout << "視頻文件總幀數(shù):" << frame_count << endl;
60 cout << "圖像的格式:" << format << endl;
61 cout << "視頻時(shí)長(zhǎng):" << video_duration << endl;
62 cout << "---------------------------------------------" << endl;
63 #endif // USE_VIDEO
64
65 #ifdef USE_CAMERA
66 VideoCapture capture(0);
67 brightness = capture.get(cv::CAP_PROP_BRIGHTNESS);
68 contrast= capture.get(cv::CAP_PROP_CONTRAST);
69 saturation = capture.get(cv::CAP_PROP_SATURATION);
70 hue = capture.get(cv::CAP_PROP_HUE);
71 gain = capture.get(cv::CAP_PROP_GAIN);
72 exposure = capture.get(cv::CAP_PROP_EXPOSURE);
73 white_balance = capture.get(cv::CAP_PROP_WHITE_BALANCE_BLUE_U);
74
75 std::cout << "---------------------------------------------" << endl;
76 std::cout << "攝像頭亮度:" << brightness << endl;
77 std::cout << "攝像頭對(duì)比度:" << contrast << endl;
78 std::cout << "攝像頭飽和度:" << saturation << endl;
79 std::cout << "攝像頭色調(diào):" << hue << endl;
80 std::cout << "攝像頭增益:" << gain << endl;
81 std::cout << "攝像頭曝光度:" << exposure << endl;
82 std::cout << "攝像頭白平衡:" << white_balance << endl;
83 std::cout << "---------------------------------------------" << endl;
84 #endif // USE_CAMERA
85
86 namedWindow(window_name,WINDOW_AUTOSIZE);
87 while (capture.isOpened())
88 {
89 capture >> frame;
90
91 #ifdef USE_VIDEO
92 pos_msec = capture.get(cv::CAP_PROP_POS_MSEC);
93 pos_frame = capture.get(cv::CAP_PROP_POS_FRAMES);
94 pos_avi_ratio = capture.get(cv::CAP_PROP_POS_AVI_RATIO);
95 cout << "---------------------------------------------" << endl;
96 cout << "視頻文件中當(dāng)前位置(ms):" << pos_msec << endl;
97 cout << "從0開(kāi)始下一幀的索引:" << pos_frame << endl;
98 cout << "視頻中的相對(duì)位置(范圍為0.0到1.0):" << pos_avi_ratio << endl;
99 cout << "---------------------------------------------" << endl;
100 #endif // USE_VIDEO
101
102 imshow(window_name, frame);
103 if (waitKey(60)==27)
104 {
105 break;
106 }
107 }
108 capture.release();
109 destroyAllWindows();
110 return 0;
111 }
打印結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的OpenCV VideoCapture 设置和获取摄像头参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c++ 动态分配数组_C/C++编程笔记
- 下一篇: 删除 索引 外键 mysql_MySQL