Python+opencv实现摄像头的调取和中间1/4图像的切割另外输出窗口

opencv和python的安装在上一篇博客中已经讲过了。

1.实现代码


import cv2
cap = cv2.VideoCapture(0)
while(True):
    ret,frame = cap.read()
    cv2.imshow("camera",frame)
    h=len(frame)
    w=len(frame[0])
    frame=frame[int(h/4):int(3*h/4),int(w/4):int(3*w/4)]
    cv2.imshow("cut",frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

2.解释代码
Import cv2 导入opencv包,调用cv2模块,是指在当前目录,相对路径下import某个模块。
Cap = cv2.VodeoCapture(0) 打开笔记本的内置摄像头,VodeoCapture()中的参数是0,表示打开内置摄像头,如果是某个视频文件的路径,则打开这个视频文件。
While(1): 重复执行后面的循环部分,其中1是常量,表示重复不断的执行循环体。
ret,frame = cap.read() cap.read()按帧读取视频,返回两个参数,赋给两个值,ret是return的缩写,其值为Ture或False,如果读取帧是正确的则返回True,frame就是每一帧的图像,是个三维矩阵。
cv2.imshow(“camera”,frame) cv2.imShow()函数可以在窗口中显示图像,camera是窗口的名称,第二个参数是输出的图像帧数。
h=len(frame) w=len(frame[0]) 定义了窗口的高度和宽度。
frame=frame[int(h/4):int(3h/4),int(w/4):int(3w/4)] 截取图像高h/4到3h/4,宽w/4到3w/4的部分,赋给frame。(设一个边长为4的正方形,取边h/4到3h/4的部分,即2,S总=16,S截=4,即S截=1/4的S总)
cv2.imshow(“cut”,frame) cut是窗口名称,frame图像帧数。
if cv2.waitKey(1) & 0xFF == ord(‘q’):
break

1为参数,单位毫秒(ms),表示间隔时间,ord(’ ')将字符转化为对应的整数(ASCII码)。–waitKey()–这个函数是在一个给定的时间内等待用户按键触发;如果用户没有按下 键,则接续等待(循环),1ms后按下q键将会break,不再捕获并显示下一帧图像。 cap.release() 释放,关闭摄像头。
cv2.destroyAllWindows() 关闭所有图像窗口。
3.测试

Python+opencv实现摄像头的调取和中间1/4图像的切割另外输出窗口