OpenCV+Python详细教程-图片+视频(一)

环境

Python3以上的版本+OpenCV+PyCharm

图片

目标

  • 读入,显示,保存图像
  • 对应的函数:cv2.imread(),cv2.imshow(),cv.imwrite()

1.1读取图像

使用函数cv2.imshow()显示图像。
第一个参数:图像的路径。
在Python中可以直接在路径前用字符r防止转意,或者用斜杠"/"
r"C:\Users\ASUS\Desktop\1.jpg"
“C:/Users/ASUS/Desktop/1.jpg”
第二个参数:告诉函数应该如何读取这幅图片
cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略, 这是默认参数
cv2.IMREAD_GRAYSCALE:以灰度模式读入图像

src=cv2.imread(r"C:\Users\ASUS\Desktop\1.jpg",cv.IMREAD_GRAYSCALE)

1.2显示图像

使用函数 cv2.imshow() 显示图像。
第一个参数: 窗口的名字
第二个参数:是我们的图像

cv2.imshow(“image”,src)

1.3保存图像

使用函数 cv2.imwrite() 来保存一个图像。首先需要一个文件名,之后才是你要保存的图像。

cv2.imwrite(r"C:\Users\ASUS\Desktop\7.jpg",src)

其他

先创建窗口,在窗口在显示图像
使用函数 cv2.namedWindow()来创建一个窗口。
第一个参数:窗口名
第二个参数:cv2.WINDOW_AUTOSIZE 窗口根据图像大小来显示
cv2.WINDOW_NORMAL 自调窗口的大小

cv2.namedWindow(‘image’, cv2.WINDOW_NORMAL)

 import cv2 

 src=cv2.imread(r"C:\Users\ASUS\Desktop\1.jpg",cv2.IMREAD_GRAYSCALE)
 cv2.namedWindow('image', cv2.WINDOW_NORMAL) #创建窗口
 cv2.imshow('image',src) #显示图像
 
 cv2.waitKey(0) #等待键盘录入
 cv2.destroyAllWindows()#关闭窗口

窗口屏幕截图将会像以下的样子

cv2.waitKey() 是一个键盘绑定函数。检查是否有键盘的输入
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。
如果 你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删 除的窗口名。

OpenCV+Python详细教程-图片+视频(一)_第1张图片

小结

import cv2 


print("---------- Hello OpenCV ----------")
src=cv2.imread(r"C:\Users\ASUS\Desktop\1.jpg",cv2.IMREAD_GRAYSCALE)
cv2.namedWindow('image', cv2.WINDOW_NORMAL) 
cv2.imshow("image",src)
k = cv2.waitKey(0)#获取键盘输入的值
if k == 27:#键盘输入esc时关闭窗口
    cv2.destroyAllWindows()
elif k == ord('s'):#键盘输入s时保存图像,且关闭窗口
    cv2.imwrite(r"C:\Users\ASUS\Desktop\7.jpg",src)
    cv2.destroyAllWindows()

视频

目标

  • 学会读取、显示、保存视频
  • 对应的函数::cv2.VideoCapture(),cv2.VideoWrite()

2.1用摄像头捕获视频

为了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是 设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。 一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或 者其他的来选择别的摄像头。之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频。

import cv2

cap = cv2.VideoCapture(0)
fourcc =cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc , 25.0, (640, 480),0)
while (True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    frame = cv2.flip(gray, 1)
    out.write(frame)
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
out.release()
cv2.destroyAllWindows()


代码中:

  1. cap = cv2.VideoCapture(0)
    cv2.VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频
  2. fourcc=cv2.VideoWriter_fourcc(*‘XVID’)
    确定视频的编码格式
  3. out = cv2.VideoWriter(‘output.avi’, fourcc , 25.0, (640, 480),0)
    cv2.VideoWriter()第一个参数表示视频的存放路径,第二个参数表示视频的编码格式,后面的参数表示帧率、视频宽高
    最后表示颜色参数为0,表示黑白
  4. ret, frame = cap.read()
    cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,利用循环读取每一帧的图像
  5. gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.cvtColor()第一个参数表示视频或者图像的变量,第二个参数表示图像或者视频颜色的选择
    cv2.COLOR_BGR2GRAY:视频以黑白的形式显示,用到图片上,图片则以灰度图显示。
  6. frame = cv2.flip(gray, 1)
    cv2.flip()第一个参数表示要旋转的视频,第二个参数表示旋转的方向,0表示绕x轴旋转,大于0的数表示绕y轴旋转,小于0的负数表示绕x和y轴旋转。
  7. cv2.waitKey(1) & 0xFF
    参数是1,表示延时1ms切换到下一帧图像
  8. cap.release()
    释放摄像头

你可能感兴趣的:(OpenCV+Python详细教程-图片+视频(一))