前提:配置好OpenCV的PyCharm工程
1.电脑图片读取
opencv中读取图片函数如下
(src_path是自己定义的变量,是要读取的图片的路径)
(img是自己定义的变量,把读到的图片赋值给它)
img=cv2.imread(src_path)
读取到之后展示出来(打开一个名为image的窗口,显示img这个图片)
cv2.imshow('image',img)
按esc键结束不保存,按s键结束并保存,完整函数如下
(按s时候可能需要鼠标单击image窗口并把输入法通过按shift改为英文才会好使)
def read_img(src_path,save_path):
img=cv2.imread(src_path)
cv2.imshow('image',img)
k=cv2.waitKey(0) & 0xFF
if k==27:
cv2.destroyAllWindows()
elif k==ord('s'):
cv2.imwrite(save_path,img)
cv2.destroyAllWindows()
注意:路径src_path和save_path表示一定要正确,比如不能用单’'分隔等,正确示例如下
src_path="C:\\Users\\DELL\\Desktop\\img.jpg"
save_path='./save1.jpg'
(./表示当前目录下,也就是该pycharm工程里)
2.电脑视频读取
读取电脑视频函数
(src_path是视频的路径,读到的视频赋值给video,路径表达方式同上文)
video=cv2.VideoCapture(src_path)
读取并显示函数
(waitkey那个表示每帧延时10ms)
def read_video(video):
while video.isOpened():
ret,image=video.read()
if ret:
cv2.imshow('image',image)
cv2.waitKey(10)
else:
break
cv2.destroyAllWindows()
3.摄像头图片读取
读取电脑摄像头的代码
(把读取到的赋值给cap)
cap=cv2.VideoCapture(0)
读取并显示图片的代码
(我这里没有加保存图片的代码)
(按q退出)
def read_picture(cap):
if cap.isOpened():
ret,picture=cap.read()
if ret:
while cv2.waitKey(1)&0xFF!=ord('q'):
cv2.imshow('picture', picture)
cap.release()
cv2.destroyAllWindows()
调用传参并执行
read_picture(cap)
4.摄像头视频读取
读取电脑摄像头的代码
(0表示电脑的摄像头)
(cv2.CAP_DSSHOW在PC端可以省略)
cap=cv2.VideoCapture(0,cv2.CAP_DSSHOW)
获取视频流参数的代码
(读的时候不需要,但是写的时候需要)
(以XVID形式保存)
(分别是视频流宽度,高度,帧率,输出编码方式)
width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps=cap.get(cv2.CAP_PROP_FPS)
fourcc=cv2.VideoWriter.fourcc('X','V','I','D')
输出保存的代码
(fps帧率可以用上文的也可以自己定)
save_path='./save.avi'
writer=cv2.VideoWriter(save_path,fourcc,fps,(width,height))
创建读取函数
(因为是逐帧读取,所以while循环里读写)
(最后一定要释放掉)
def read_video(cap,out):
while cap.isOpened():
ret,frame=cap.read()
if ret:
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1)&0xFF==ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
调用传参并执行
read_video(cap,writer)