1.opencv基础
In [1]:
import cv2 as cv
#读出video
#打开指定路径下的视频文件:cap =cv2.VideoCapture(path)
#读取每一帧:flag,frame = cap.read(),打开视频并读取每一帧图片,将视频转换为4维的矩阵
def video_demo():
cap=cv.VideoCapture(0)
while(1):
# get a frame
ret, frame = cap.read()#frame是每一针
#视频左右镜像打开,参数是1
frame=cv.flip(frame,1)
# show a frame
cv.imshow("capture", frame)
cv.waitKey(50)
# c=cv.waitKey(10)#延时50ms,等待键盘输入返回对应的ASCII
#if c==27:
#其中27是ESC的意思,ASCII十进制的表示方法
if cv.waitKey(20)&0xFF == ord('q'):
break
#如果在输入q后仍然无法中断摄像头,把cv.waitKey时间延长一点即可
#0xFF == ord('q')是键盘接收命令q时退出,
#0xFF位掩码是d对应十进制255,二进制1111 1111,只有后8位实际有效,为避免产干扰,通过 ‘与’ 操作将其余位置0。
#ord('q'):返回q对应的Unicode码对应的值,q对应的Unicode数值为113。ord()是返回字符对应的整数
#查看图片信息
def get_image_info(image):
print(type(image))
print(image.shape)
print(image.size)
print(image.dtype)
print("----hello----")
#读取图片
src=cv.imread("aaa.png",cv.WINDOW_AUTOSIZE)
#窗口名字
cv.namedWindow("picture1",0)
#显示图片窗口
#如果名字是中文则文件上要加上 # -*- coding=GBK -*-
# 如果不加会报错,如果加的是 # -*- coding: utf-8 -*-,虽然不会报错,但会是乱码
cv.imshow("picture1",src)
# 创建窗口,其实不写这行代码也可以show出来。单位mshttp://localhost:8889/notebooks/%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/OPENCV/1.opencv%E5%9F%BA%E7%A1%80.ipynb#
cv.waitKey(1000)#参数为0,就是窗口一直显示
#关闭窗口
cv.destroyAllWindows()#删除建立的全部窗口,释放资源
get_image_info(src)
#保存图片
cv.imwrite("./test1.png",src)
#显示灰度图
gray=cv.cvtColor(src,cv.COLOR_BGR2GRAY)
cv.namedWindow("picture2",0)
cv.imshow("picture2",gray)
cv.waitKey(5000)
cv.destroyAllWindows()
In [2]:
video_demo()
cv.waitKey(1)
#如果没下面的指令也会造成,在获取键盘指令后,窗口无法完全关闭
cv.destroyAllWindows()#删除建立的全部窗口,释放资源