python+opencv图像处理,基于python的opencv图像处理
为了获得良好的图像效果,需要设定照相机的参数。
当照相机流程是帽子时,设置参数是cap.set(参数号,参数) )
获取参数值的函数是cap.get(参数编号)
让我们看一下照相机的参数设定读取的例子。在代码中设置三个参数,然后读取这三个参数。
选择导入cv2#相机编号,并通常从0开始cap=cv2.videocapture(0),然后选择参数cap . set(31280)cap . set(41024)cap。set(0)0.1)print(width={ }(格式)cap。get(3))(print)height={ }(.format ).cap.get))))
宽度=1280.0
高度=720.0
暴露度=-1.0
宽度、高度、设定有效,但曝光量的设定恢复为无效。
相机可以设定什么样的参数?参数号码的对应关系如何?请看下面的列表0 .cv _ cap _ prop _ pos _ mseccurrentpositionofthevideofileinmilliseconds。1 .cv _ cap _ prop _ pos _ frames 0-bames 0 tion of video file 3。cv _ cap _ prop _ frame _ wid de cap _ prop _ frame _ heighthehightframesinthevideostream。5.5 ._ counnumberroframes in the vedio file。8 .cv _ cap _ prop _ formatformoftobjectsreturnedbyretrieve(。9 .cv _ cap)当前捕获模式。10 .cv _ cap _ prop _ brightness布罗德。11 .cv _ cap _ prop _ contraststoroftheimage(仅用于cor ) op _ huehueoftheimage(仅用于相机).cv15.cv _ cap _ prop _ exposure曝光(仅针对相机) )。16 .cv _ cap _ prop _ convert _ rgbbooleanflags表示heterimagesshouldbeconvertedtorgb。17 .cv _ cap _ prop _ prop ocameras(注:仅限受dc 1394 v2支持。x后端电流)此处
一般来说,读取返回-1的代码会无效。让我们看看检测有效无效的代码。上面的代码更改了
选择导入cv2#相机号,通常从0开始先设定cap=cv2.videocapture(0),然后设定参数(forIinrange ) 47 ) (:print))编号={ } parararint读取的cap.get(I))而True: ret,img=cap.read ) cv2.imshow),img)按经济社会委员会键退出key=c
v2。如果key==27,等待键(10):断开cv 2。destroyallwindows()cv2 .视频捕获(0)。释放()运行结果是:
0=0.0
1=0.0
2=-1.0
3=1280.0
4=720.0
5=30.0
6=842094158.0
7=-1.0
8=-1.0
9=0.0
10=0.0
11=0.0
12=64.0
13=0.0
14=0.0
15=-1.0
16=1.0
17=-1.0
18=-1.0
19=-1.0
20=2.0
21=-1.0
22=100.0
23=4600.0
24=-1.0
25=-1.0
26=-1.0
27=-1.0
28=-1.0
29=-1.0
30=-1.0
31=-1.0
32=3.0
33=-1.0
34=-1.0
35=-1.0
36=-1.0
37=-1.0
38=-1.0
39=-1.0
40=1.0
41=1.0
42=1400.0
43=-1.0
44=-1.0
45=-1.0
46=-1.0
可以看到我的摄像头哪些参数可以设置,不为-1的。
在程序中编号很容易弄错,可以用如下方式比较好看一点,也不容易出错。
第一组(cv2 .CAP _ PROP _ FRAME _ WIDTH 1280
第一组(cv2 .帽_道具_框架_高度,1024)
第一组(cv2 .CAP_PROP_EXPOSURE,0.1)
上面表不完整,但基本都包括了我们看看现在中文版里面怎么说的:
https://github。com/opencv/opencv/blob/master/modules/视频io/include/opencv 2/视频io。HPP
枚举视频捕获属性{ CAP_PROP_POS_MSEC=0,//!视频文件的当前位置,以毫秒为单位CAP_PROP_POS_FRAMES=1,//!下一个要解码/捕获的帧的从0开始的索引106 . AVI比率=2,//!视频文件的相对位置:0=影片的开头,1=影片的结尾. CAP_PROP_FRAME_WIDTH=3,//!视频流中帧的宽度. CAP_PROP_FRAME_HEIGHT=4,//!视频流中帧的高度. CAP_PROP_FPS=5,//!帧速率FOURCC=6,//!编解码器的四字符代码。参见视频作者:fourcc .CAP_PROP_FRAME_COUNT=7,//!视频文件中的帧数CAP_PROP_FORMAT=8,//!视频捕获:检索()返回的%Mat对象的格式. CAP_PROP_MODE=9,//!表示当前捕获模式的后端特定值10 . CAP _ PROP _ BRIGHTNESS=10,//!图像的亮度(仅适用于支持的相机)。CAP_PROP_CONTRAST=11,//!图像的对比度(仅适用于相机)。CAP_PROP_SATURATION=12,//!图像的饱和度(仅适用于相机)。CAP_PROP_HUE=13,//!图像的色调(仅适用于相机)。CAP_PROP_GAIN=14,//!图像增益(仅适用于支持的摄像机)。CAP_PROP_EXPOSURE=15,//!曝光(仅适用于支持的相机)。CAP_PROP_CONVERT_RGB=16,//!指示图像是否应转换为RGB的布尔标志. CAP _ PROP _ WHITE _ BALANCE _ BLUE _ U=17,//!目前不支持CAP _ PROP _整流=18,//!立体相机的整流标志(注:目前仅DC1394 v 2.x后端支持)。CAP_PROP_MONOCHROME=19,CAP_PROP_SHARPNESS=20,CAP_PROP_AUTO_EXPOSURE=21,//!DC1394:曝光控制由相机完成,用户可以使用此功能调整参考水平. CAP_PROP_GAMMA=22,CAP_PROP_TEMPERATURE=23,CAP_PROP_TRIGGER=24,CAP_PROP_TRIGGER_DELAY=25,CAP _ PROP _ WHITE _ BALANCE _ RED _ V=26,CAP_PROP_csdl=27,CAP_PROP_FOCUS=28,CAP_PROP_GUID=29,CAP_PROP_ISO_SPEED=30,CAP_PROP_BACKLIGHT=32,CAP_PROP_PAN=33,CAP_PROP_TILT=34,CAP _ PROP _ PROP _ TILT弹出视频/摄像机过滤器对话框(注意:目前仅受DSHOW后端支持。属性值被忽略)CAP_PROP_BUFFERSIZE=38,CAP_PROP_AUTOFOCUS=39,CAP_PROP_SAR_NUM=40,//!样本纵横比:num/DEN(num)CAP _ PROP _ SAR _ DEN=41,//!样本纵横比:num/den(den)CAP _ PROP _ back end=42,//!当前后端(枚举视频捕获应用程序).只读属性CAP_PROP_CHANNEL=43,//!视频输入或频道号(仅适用于支持的摄像机)CAP_PROP_AUTO_WB=44,//!启用/禁用自动白平衡CAP_PROP_WB_TEMPERATURE=45,//!白平衡色温# IFN def CV _ DOXYGEN CV _ _ CAP _ PROP _ LATEST # endif };其实参数取值范围很重要,看来我还是要查找资料。下面是别人的一个例子。
capture.set(CV_CAP_PROP_FPS,30);//帧率帧/秒
捕捉。set(CV _ CAP _ PROP _ BRIGHTNESS,1);//亮度
捕捉。set(CV _ CAP _ PROP _ CONTRAST,40);//对比度40
捕捉。set(CV _ CAP _ PROP _ SATURATION,50);//饱和度50
capture.set(CV_CAP_PROP_HUE,50);//色调50
捕捉。set(CV _ CAP _ PROP _ EXPOSURE,50);//曝光50 获取摄像头参数
要核实参数范围,我们用一个现成的软件,比如窗子的相机,或者AMcap,linux下的guvcview,奶酪。
在设置好参数后,我们的大蟒程序获取他们的参数,是个比较好的办法。
然后用大蟒运行获取所有参数:
对于范围(49)内的I:如果ABS(cap。get(I)1)0.001:print( { }).参数={} 。格式(I,cap.get(i)))我的运行结果如下:
ipdb 0.parameter=0.0
1 .参数=0.0
3 .参数=1280.0
4 .参数=720.0
5 .参数=30.0
6 .参数=842094158.0
9 .参数=0.0
10 .参数=0.0
11 .参数=0.0
12 .参数=64.0
13 .参数=0.0
14 .参数=0.0
16 .参数=1.0
20 .参数=2.0
22 .参数=100.0
23 .参数=4600.0
32 .参数=3.0
40 .参数=1.0
41 .参数=1.0
42 .参数=1400.0
在不知道参数范围的情况下调整参数比较盲目。
下面看我用安培的参数调整对话框,大致可以看出参数调整的范围。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。