提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

用opencv做计算机视觉,图片和视频的这些基本数据的导入和存储是必须要掌握的基本内容。

一、 图片的导入

import os
import cv2
# 加载图片路径
image_path = os.path.join('.','data','bird.jpg')
# 加载图片
img = cv2.imread(image_path)
# 保存图片(不保存图片时此行可不写)
cv2.imwrite(os.path.join('.','data','bird_1.jpg'))
# 展示图片
cv2.imshow('image',img) #创建一个image名字的窗口
cv2.waitkey(0) 	#如果没有这行将会不展示图片,传入0默认一直不关直到你键盘输入,如写5000则是5秒后自动关闭
cv2.destroyWindow() #销毁窗口释放内存

二、视频的导入

  • 视频其实就是一张张图片的迭代,我们所看到的视频非常流畅是因为图片之间切换的时间非常短也就毫秒的差距,也就是我们常说的帧,一秒10帧,就是一秒切换了十张图片,一张图片停留时间为100毫秒(这其实已经很卡了)。
  • 第一次执行 vbool,image = video.read()会将返回给你组成视频的第一张图片和一个布尔值vbool为true,再次执行会返回给你第二张,直到你遍历到最后一张图片时,然后再多执行一次就会返回给你一个false然后退出程序,视频播放完毕。
  • 视频播放完毕后一定要记得销毁你的视频数据和所创建的所有图片窗口
import os
import cv2
# 加载视频路径
video_path = os.path.join('.','data','bird.mp4')
# 加载视频
video = cv2.VideoCapture(video_path)
while True:
    vbool,image = video.read() #返回两个值,一个布尔值,一个图片
    if vbool == False:
        break
    cv2.imshow('bird',image)	#创建一个窗口
	cv2.waitKey(40)	#每张图片展示40毫秒,相当于一秒多少帧
cv2.destroyAllWindows()	#销毁创建的所有窗口
video.release()	#销毁视频

三、网络摄像头的导入

  • 网络摄像头其实也和视频一样,不同的一点是视频有结尾而你的摄像头是一直开着的也就是该视频是不断更新的没有结尾那也就会一直播放一直返回给你true,要想退出程序则需要做一些判断了。其余操作就和普通视频一样了。
import cv2
webcam = cv2.VideoCapture(0)	#传入自己的网络摄像头(如果只有一个网络摄像头一般是0,如果不是需要自己查一下自己网络摄像头的id)
while True:
    ret,image = webcam.read()	#返回两个值,一个布尔值,一个图片
    cv2.imshow('image',image)	#创建一个窗口
    # 每张图片展示40毫秒(如果想退出请点击键盘的q)
    if cv2.waitKey(40) & 0xFF == ord('q'):
        break
cv2.destroyAllWindows()	#销毁创建的所有窗口
webcam.release()	#销毁视频
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐