Der folgende Artikel zeigt Ihnen, wie Sie die Kameraauflösung und verschiedene Parameter in Python OpenCV einstellen. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich ist. Schauen wir uns das gemeinsam an
1 Um das Video zu erhalten, sollten Sie ein VideoCapture-Objekt erstellen. Sein Parameter kann die Indexnummer des Geräts oder eine Videodatei sein. Die Geräteindexnummer gibt die zu verwendende Kamera an. Die meisten Laptops verfügen über integrierte Kameras. Der Parameter ist also 0. Sie können eine andere Kamera auswählen, indem Sie sie auf 1 oder etwas anderes setzen. Danach können Sie das Video Bild für Bild aufnehmen. Aber vergessen Sie nicht, die Videoaufnahme zu beenden. Verwenden Sie den Befehl ls /dev/video*, um das Kameragerät anzuzeigen
2, cap.read() gibt einen booleschen Wert (True/False) zurück. True, wenn der Frame korrekt gelesen wird. So können Sie abschließend überprüfen, ob die Videodatei das Ende erreicht hat, indem Sie ihren Rückgabewert überprüfen. Manchmal kann es sein, dass cap das Kameragerät nicht erfolgreich initialisiert. In diesem Fall meldet der obige Code einen Fehler. Mit cap.isOpened() können Sie prüfen, ob die Initialisierung erfolgreich war. Wenn der Rückgabewert True ist, gibt es kein Problem. Andernfalls verwenden Sie die Funktion cap.open(). Sie können die Funktion cap.get(propId) verwenden, um einige Parameterinformationen des Videos abzurufen. Hier kann propId eine beliebige Ganzzahl zwischen 0 und 18 sein. Jede Zahl stellt ein Attribut des Videos dar. Einige der Werte können mit cap.set(propId,value) geändert werden. Beispielsweise kann ich cap.get(3) und cap.get(4) verwenden, um die Breite und Höhe jedes Frames anzuzeigen. Standardmäßig beträgt der resultierende Wert 640 x 480. Aber ich kann ret=cap.set(3,320) und ret=cap.set(4,240) verwenden, um die Breite und Höhe auf 320X240 zu ändern.
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()
Das obige ist der detaillierte Inhalt vonPython-OpenCV-Methode zum Festlegen der Kameraauflösung und verschiedener Parameter_Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!