您的位置:首页 > 编程语言 > Python开发

OpenCV - 图像及视频读写(Python实现)

2019-05-10 19:01 363 查看
版权声明:C橘子 https://blog.csdn.net/qq_40344307/article/details/89977277
  1. 读/写图像文件
    OpenCV通过imread()函数和imwrite()函数进行图像读写。
import cv2
image = cv2.imread('02CV.png') #读取图片 默认为彩色
cv2.imwrite('MyPic.jpg', image)#保存为jpg格式

 ①imread()函数的第一个参数是需要读入的图像文件,需要注意的是这幅图像需要在程序工作路径或提供绝对路径。第二个参数是读取图像的方式

  • cv2.IMREAD_COLOR = 1:读入一副彩色图像。图像的透明度会被忽略,
    这是默认参数。
  • cv2.IMREAD_GRAYSCALE = 0:以灰度模式读入图像

 ②imwrite()函数是将第二个参数中的图像信息保存到第一个参数的文件中。
    效果图

  1. 显示图像
     使用函数 cv2.imshow() 显示图像。窗口会自动调整为图像大小。第一个参数是窗口的名字,其次才是我们的图像。
cv2.imshow('MyPic',image)
cv2.waitKey(0)
cv2.destroyAllWindows()

  cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限
期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下,这个后面我们会接着讨论。
  cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删除的窗口名。

  1. 用摄像头捕获视频
import cv2

cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()#获取图像
cv2.imshow("capture", frame)#显示图像
if cv2.waitKey(1) & 0xFF == ord('q'):#监测到键盘输入q关闭
break
cap.release()#释放摄像头
cv2.destroyAllWindows()#关闭窗口

 为了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。
 然后在循环里不断获取并展示图像,并且等待键盘输入 q 结束显示。

  1. 保存摄像头视频
import cv2 #包含OpenCV

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc('I','4','2','0')
output = cv2.VideoWriter('out.avi',fourcc,20.0,(640,480))
while(cap.isOpened()):
success,frame = cap.read()
if success == True:
frame = cv2.flip(frame, 1)#图像水平翻转实现镜子
output.write(frame)#写入一帧画面
cv2.imshow('video',frame)#显示画面
if cv2.waitKey(1) & 0xFF == ord('q'):#等待关闭操作
break;
else:
break;
#结束代码
cap.release()
output.release()
cv2.destroyAllWindows()
  1. 从文件中读取视频
import cv2
cap=cv2.VideoCapture("out.avi")#打开指定路径上的视频文件

while (True):
ret,frame=cap.read()#读取视频文件一帧图像
if ret == True:
cv2.imshow("video",frame)#在video窗口显示图像
if cv2.waitKey(25)&0xFF==ord('q'):#设置25ms延时并且等待按键按下
break
else:#失败退出
break
#关闭操作
cap.release()
cv2.destroyAllWindows()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: