Heim  >  Artikel  >  Backend-Entwicklung  >  Python-OpenCV-Methode zum Festlegen der Kameraauflösung und verschiedener Parameter_Python

Python-OpenCV-Methode zum Festlegen der Kameraauflösung und verschiedener Parameter_Python

不言
不言Original
2018-05-18 14:40:309448Durchsuche

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
Verwandte Empfehlungen:
#!/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-Bildgrößenkonvertierungsmethode

Detaillierte Erläuterung der grundlegenden Betriebsmethode von Python-OpenCV_ python

Detaillierte Erläuterung von Beispielen für Python mit opencv zum Lesen von Bildern



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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn