python opencv设置摄像头分辨率以及各个参数的方法


Posted in Python onApril 02, 2018

1,为了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或者其他的来选择别的摄像头。之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频。使用 ls /dev/video*命令可以查看摄像头设备

2,cap.read() 返回一个布尔值(True/False)。如果帧读取的是正确的,就是 True。所以最后你可以通过检查他的返回值来查看视频文件是否已经到了结尾。有时 cap 可能不能成功的初始化摄像头设备。这种情况下上面的代码会报错。你可以使用 cap.isOpened(),来检查是否成功初始化了。如果返回值是True,那就没有问题。否则就要使用函数 cap.open()。你可以使用函数 cap.get(propId) 来获得视频的一些参数信息。这里propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性,见表其中的一些值可以使用cap.set(propId,value) 来修改,value 就是

你想要设置成的新值。例如,我可以使用 cap.get(3) 和 cap.get(4) 来查看每一帧的宽和高。默认情况下得到的值是 640X480。但是我可以使用 ret=cap.set(3,320)和 ret=cap.set(4,240) 来把宽和高改成 320X240。

CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
• CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
• CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
• CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
• CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
• CV_CAP_PROP_FPS Frame rate.
• CV_CAP_PROP_FOURCC 4-character code of codec.
• CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
• CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
• CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
• CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
• CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
• CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
• CV_CAP_PROP_HUE Hue of the image (only for cameras).
• CV_CAP_PROP_GAIN Gain of the image (only for cameras).
• CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
• CV_CAP_PROP_CONVERT_RGB Boolean flags whether images should be converted to RGB. indicating
• CV_CAP_PROP_WHITE_BALANCE Currently unsupported
• CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend cur-rently)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cv2
import numpy
from hlf_module import hlf_define
from std_msgs.msg import String
import matplotlib.pyplot as plot
import xml.dom.minidom
import pylab
import rospy
import time
cap = cv2.VideoCapture(0)
cap.set(3,640) #设置分辨率
cap.set(4,480)
fps =cap.get(cv2.CAP_PROP_FPS) #获取视频帧数
face_casade = cv2.CascadeClassifier('/opt/ros/kinetic/share/OpenCV-3.2.0-dev/haarcascades/haarcascade_frontalface_default.xml')
Node_name='neck'
#print cap.isOpened()
class Detect_face():
def __init__(self):
'''定义节点Node_name(全局变量,而非具体名称)'''
self.err_pub=hlf_define.err_publisher()#错误消息发布者
rospy.init_node(Node_name,anonymous=True)
self.neck_puber=rospy.Publisher(hlf_define.TOPIC_ACTION_NECK,String,queue_size=10)
time.sleep(0.5)
def head_motor_value(self):#解析xml文件 获取舵机的范围值
dom = xml.dom.minidom.parse('/home/sb/catkin_ws/src/hlf_robot/scripts/hlf_action/head_value.xml')
#得到文档元素对象
root = dom.documentElement
itemlist = root.getElementsByTagName('login')
item = itemlist[0]
max_value=item.getAttribute("max")
min_value=item.getAttribute("min")
return max_value,min_value
def detect_face(self):
# get a frame
#frame=cv2.imread('/home/sb/桌面/timg.jpeg')
ret, frame = cap.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#转成灰度图
#frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
# show a frame
cv2.imshow("capture", gray)
faces = face_casade.detectMultiScale(gray,1.2,5) #检测人脸
#print len(faces)
if len(faces)>0:#判断是否检测到人脸
result = ()
max_face = 0
value_x=0
for (x,y,w,h) in faces:
if (w*h > max_face): #检测最大人脸
max_face = w*h
result = (x,y,w,h)
# max_face.append(width*height)
x=result[0]
w=result[2]
z=value_x=value_x+x+w/2
return z
else:
return 1
if __name__=='__main__':
face=Detect_face()
motor_max,motor_min= face.head_motor_value()
x=[]
i=1
while True:
try:
z=face.detect_face()
if z != 1:
x.append(z)
if len(x)>(fps-1):
true_x = int(sum(x)/30)
if(true_x>319):
motor_value=int(1500+(int(motor_max)-1500)*(true_x-319)/320)#转换成舵机值 头部向左转
face.neck_puber.publish('%s'%motor_value)
elif (true_x<319):
motor_value=int(1500-(1500-int(motor_min))*(319-true_x)/320)
face.neck_puber.publish('%s'%motor_value)
x=[]
else:
if i==fps:
face.neck_puber.publish('1500')
i=1
else:
i +=1
print (U'未检测到人脸')
if cv2.waitKey(1) & 0xFF == ord('q'):
break
except Exception,e:
print e
cap.release()
cv2.destroyAllWindows()

以上这篇python opencv设置摄像头分辨率以及各个参数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
Python爬虫:通过关键字爬取百度图片
Feb 17 Python
对numpy中array和asarray的区别详解
Apr 17 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
numpy中的meshgrid函数的使用
Jul 31 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
python中类与对象之间的关系详解
Dec 16 Python
python opencv 图像尺寸变换方法
Apr 02 #Python
Python聊天室程序(基础版)
Apr 01 #Python
Python socket实现简单聊天室
Apr 01 #Python
简单实现python聊天程序
Apr 01 #Python
简单实现Python爬取网络图片
Apr 01 #Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 #Python
python之DataFrame实现excel合并单元格
Feb 22 #Python
You might like
Memcache 在PHP中的使用技巧
2010/02/08 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
php数组分页实现方法
2016/04/30 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
基于JavaScript实现轮播图效果
2021/01/02 Javascript
python操作MongoDB基础知识
2013/11/01 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
python如何实现反向迭代
2018/03/20 Python
django如何连接已存在数据的数据库
2018/08/14 Python
想学python 这5本书籍你必看!
2018/12/11 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
网络方面基础面试题
2012/11/16 面试题
《美丽的黄昏》教学反思
2014/02/28 职场文书
信用卡催款律师函
2015/05/27 职场文书
演讲开场白和结束语
2015/05/29 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
小学校园广播稿
2015/08/18 职场文书
详解python字符串驻留技术
2021/05/21 Python
日元符号 ¥
2022/02/17 杂记
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers