opencv视频图像识别方法 opencv保存视频格式( 二 )


if not cap.isOpened():
print(“Cannot open camera”)
exit()
while True:
# 逐帧捕获
ret, frame = cap.read()
# 如果正确读取帧,ret为True
if not ret:
print(“Can’t receive frame (stream end?). Exiting …”)
break
frame = cv2.flip(frame, 1) # 水平翻转
ret = out.write(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 显示结果帧e
cv2.imshow(‘frame’, frame)
if cv2.waitKey(1) == ord(‘q’): break
# 完成所有操作后,释放捕获器
out.release()
cap.release()
cv2.destroyAllWindows()
captureVideoFromCamera()
六、OpenCV-Python的鼠标事件捕获OpenCV提供了设置鼠标事件回调函数来提供鼠标事件处理的机制,设置回调函数的方法如下:
cv2.setMouseCallback(winName, OnMouseFunction, param)
其中winName为要设置鼠标回调处理的窗口名,OnMouseFunction为回调函数,用于处理鼠标响应,param为设置回调函数时传入的应用相关特定参数,可以不设置,但需要在回调函数访问设置回调函数对象属性时非常有用 。
示例:
cv2.namedWindow(‘image’)
cv2.setMouseCallback(‘image’, draw_circle)
七、waitKey键盘事件处理openCV提供了快速的键盘处理支持函数waitKey,调用语法:
retval = cv.waitKey( [, delay] )
其中:
delay:等待键盘响应的时间,单位是毫秒,如果为0,则是一直等待到有键盘输入,否则就是等待对应时间还没有输入就超时返回retval:如果是超时返回-1,否则返回对应键盘按键的ASCII码,但注意对于部分功能键如F1–F10返回值为0,其他功能键老猿未一一测试,可以确认ESC键值可以正常返回(返回值27),Ctrl+c返回3八、OpenCV的矩形绘制OpenCV提供了在图像中绘制几何图形的方法,绘制的图像包括矩形、椭圆、扇形、弧等 。本文主要介绍矩形的绘制,具体调用语法如下:
rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
其中参数:
img:要显示的图像,为numpy数组,格式为BGR格式pt1:左上角点的坐标pt2:右下角点的坐标color:绘制的颜色,为BGR格式的三元组,如(255,0,0)表示蓝色thickness:边框的厚度,如果为负数,则该矩形为实心矩形,否则为空心矩形linetype:线型,包括4连通、8连通以及抗锯齿线型,使用缺省值即可shift:坐标值的精度,为2就表示精确到小数点后2位另外该方法还有个变种调用方式:
rectangle(img, rec, color[, thickness[, lineType[, shift]]]),其中的rec为上面pt1和pt2构建的矩形 。
除了矩形,OpenCV还支持绘制点、直线、圆、椭圆、文本(不支持中文)等,具体可参考《使用Python OpenCV处理图像之详解直线、圆、矩形及文字的绘制》,老猿就不展开介绍了 。
下面的示例代码是打开视频播放,鼠标点击后暂停播放并在点击位置画圆,再次点击恢复播放:
import cv2
def mouseEvent( event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
param[0] = not param[0]
param[1] = (x,y)
def playVideoFile():
cap = cv2.VideoCapture(r’f:videozbl1.mp4′)
fps = 1
eventInf = [False,None]
frame = None
if not cap.isOpened():
print(“Cannot open camera”)
exit()
cv2.namedWindow(‘image’)
cv2.setMouseCallback(‘image’, mouseEvent,eventInf)
while True:
# 逐帧捕获
pause,mousePos = eventInf
if not pause:
ret, frame = cap.read()
if not ret:
if frame is None :
print(“The video has end.”)
else:
print(“Read video error!”)
break
else:


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: