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 相关文章推荐
python使用分治法实现求解最大值的方法
May 12 Python
Python队列的定义与使用方法示例
Jun 24 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
Python分支语句与循环语句应用实例分析
May 07 Python
详解Python的三种可变参数
May 08 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
解决python 读取 log日志的编码问题
Dec 24 Python
Python生成并下载文件后端代码实例
Aug 31 Python
详解如何用Python实现感知器算法
Jun 18 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
React实现todolist功能
2020/12/28 Javascript
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
python3 拼接字符串的7种方法
2018/09/12 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
员工自我鉴定
2013/10/09 职场文书
环保倡议书范文
2014/05/12 职场文书
医院党建工作总结2015
2015/05/26 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
2016公司年会主持词
2015/07/01 职场文书
pandas进行数据输入和输出的方法详解
2022/03/23 Python