提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
使用Python + OpenCV
一、环境
1. 安装Python。python可以根据自己的计算机系统在官网下载。
网址:https://www.python.org/downloads/Download Python | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downloads/
2. 安装cv2。pip install opencv-python
二、图片基本操作
1.读取,显示,保存
cv2.imread("pic_file", [文件显示颜色parms])
cv2.imshow('显示pic标题', 要显示的图片)
cv2.imwrite('要保存的pic filename', 要保存的图片)
代码如下(示例):
import cv2 as cv
# 读取图片
img = cv.imread("image.png")
# 显示图片
cv.imshow("display_img", img)
# 保存图片
cv.imwrite("image.png", img)
2.从相机中读取视频
cap = cv2.VideoCapture(parm) # parm可以是设备索引或视频文件的名称 。此处是从相机中读取,参数使用设备索引,指定哪个摄像头的数字。
ret, frame = cap.read() # ret是一个代表是否有返回的布尔值(True/False),frame是每个返回的帧。 可以根据ret来判断视频的末尾。如果没有帧,你不会得到错误,你会得到None。
代码如下(示例):
import cv2 as cv
cap =cv.VideoCapture(0)
if not cap.isOpened():
print("Can't open the camera")
exit()
while True:
ret, frame = cap.read()
# 如果正确读取到帧,ret 为 True
if ret:
gray = cv.cvtColor(frame, cv.COLOR_BGR2RGB)
cv.imshow('frame', gray)
if cv.waitKey(1) == ord('q'):
break
cap.release()
cv.destroyAllWindows()
BTW, 如果从文件中读取视频,上述代码中的cap = cv.VideoCapture(0)改为如下代码:
avi_path = r"E:\tmp\1.mp4"
cap = cv.VideoCapture(avi_path)
总结
1. 视频实际上是一帧一帧地显示。对视频的处理就是对每一帧图片的处理。
2. OpenCV 将颜色读取为 BGR(蓝绿红),但大多数计算机应用程序读取为 RGB(红绿蓝)
3.
cv2.imread()读取图片,numpy.ndarray。BGR格式,0~255
读取视频中的帧文件,每一帧文件,numpy.ndarray。
cv2.imread()与cv2.COLOR_RGB2BGR一起,蓝色会变成橙色。使用PIL中的Image, 颜色正常。
代码如下:
import cv2
import numpy as np
from PIL import Image
img = cv2.imread(r"D:\TT.bmp")
# 蓝色变橙色
im_source = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
cv2.imshow("imsource", im_source)
cv2.waitKey(0)
# 蓝色显示正常
img = Image.open(r"D:\PythonWork\Contour\Photos\TT_2_1.bmp")
image = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
cv2.imshow("image", image)
cv2.waitKey(0)