ホームページ >バックエンド開発 >Python チュートリアル >カメラの解像度とさまざまなパラメータを設定するための Python opencv メソッド_python

カメラの解像度とさまざまなパラメータを設定するための Python opencv メソッド_python

不言
不言オリジナル
2018-05-18 14:40:309541ブラウズ

以下では、Python opencv でカメラの解像度とさまざまなパラメーターを設定する方法についての記事を共有します。これは良い参考値であり、皆様のお役に立てれば幸いです。一緒に見てみましょう

1. ビデオを取得するには、VideoCapture オブジェクトを作成する必要があります。 彼のパラメータは、デバイスまたはビデオファイルのインデックス番号です。デバイスインデックス番号は、使用するカメラを指定します。ほとんどのラップトップにはカメラが内蔵されています。したがってパラメータは0です。 1 またはその他の値に設定すると、別のカメラを選択できます。その後、ビデオをフレームごとにキャプチャできます。ただし、最後に、ビデオのキャプチャを停止することを忘れないでください。 ls /dev/video* コマンドを使用してカメラ デバイス

2 を表示すると、cap.read() はブール値 (True/False) を返します。 フレームが正しく読み取られた場合は True。したがって、最後に、戻り値を確認することで、ビデオ ファイルが最後に達したかどうかを確認できます。キャップがカメラ デバイスを正常に初期化できない場合があります。この場合、上記のコードはエラーを報告します。 cap.isOpened() を使用して、初期化が成功したかどうかを確認できます。戻り値がTrueであれば問題ありません。それ以外の場合は、関数 cap.open() を使用します。関数 cap.get(propId) を使用して、ビデオのパラメーター情報を取得できます。ここで、propId には 0 から 18 までの任意の整数を指定できます。各数値はビデオの属性を表します。値の一部は、cap.set(propId,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(&#39;%s&#39;%motor_value)
x=[]
else:
if i==fps:
face.neck_puber.publish(&#39;1500&#39;)
i=1
else:
i +=1
print (U&#39;未检测到人脸&#39;)
if cv2.waitKey(1) & 0xFF == ord(&#39;q&#39;):
break
except Exception,e:
print e
cap.release()
cv2.destroyAllWindows()

関連おすすめ:

python opencvの画像サイズ変換方法

Python-OpenCV_pythonの基本操作方法を詳しく解説

opencvを使って画像を読み込むPythonの例を詳しく解説



以上がカメラの解像度とさまざまなパラメータを設定するための Python opencv メソッド_pythonの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。