4.图片
目标:
- 使用cv2.imread(),cv2.imshow(),cv2.imwrite()
- 使用Matplotlib显示一幅照片
4.1 读入图片
cv2.imread()
- 参数一:图片路径
- 参数二:如何读取图片- 读取彩色:cv2.IMREAD_COLOR
- 读取灰度图像:cv2.IMREAD_GRAYSCALE
- 读取原始图像设为cv2.IMREAD_UNCHANGED.
就算图像的路径是错的,OpenCV 也不会提醒你的,但是当你使用命 令print img时得到的结果是None
为了保证与matlab生成数据保持一致,我们按照如下代码来获得灰度图。切记,以后不要再指定imread的第二个参数为0来获得灰度图了。
opencv中IMREAD_GRAYSCALE与COLOR_BGR2GRAY是不同的
https://blog.csdn.net/zhaoxi_li/article/details/102529160
4.2显示图片
使用函数 cv2.imshow() 显示图像。窗口会自动调整为图像大小。第一
个参数是窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜
欢,但是必须给他们不同的名字
img = cv2.imread('./Pytorch.png',cv2.IMREAD_COLOR)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.destroyAllWindows()
:删除所有打开的窗口
cv2.destroyAllWindow(name)
:删除名字为name的窗口
如果可以自动决定可以调整窗口大小,可以先创建一个窗口.使用
cv2.namedWindow(winname,flags)
-flags:
cv2.WINDOW_AUTOSIZE 不可调窗口大小
cv2.WINDOW_NORMAL 可调整窗口大小
cv2.resizeWindow("img", 1600, 900)
- 设置长和宽
import cv2
cv2.namedWindow('img',flags=cv2.WINDOW_NORMAL)
cv2.resizeWindow("img", 1600, 900) # 设置长和宽
img = cv2.imread('./Pytorch.png',cv2.IMREAD_COLOR)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
4.3保存图像
cv2.imwrite(name,img)
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img',45,45)
img = cv2.imread('./Pytorch.png',cv2.IMREAD_COLOR)
cv2.imshow('img',img)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('save.png',img)
cv2.destroyAllWindows()
4.4使用Matplotlib显示图像
img = cv2.imread('./Pytorch.png',cv2.IMREAD_GRAYSCALE)
plt.title('Read Image by Opencv')
plt.axis('off')
plt.imshow(img)
plt.show()
彩色图像使用 OpenCV 加载时是 BGR 模式。但是 Matplotib 是 RGB 模式。
-------------- 解决方案
img = cv2.imread('./Pytorch.png',cv2.IMREAD_COLOR)
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.title('Read Image by Opencv')
plt.axis('off')
plt.imshow(img2)
plt.show()
5.视频
目标
• 学会读取视频文件,显示视频,保存视频文件
• 学会从摄像头获取并显示视频
• 你将会学习到这些函数:cv2.VideoCapture(),cv2.VideoWrite()
5.1使用摄像头捕获视频
cap = cv2.VideoCapture(0)
if cap.isOpened():
while (True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
- 你可以使用函数 cap.get(propId) 来获得视频的一些参数信息。这里
propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性 - 其中的一些值可以使用 cap.set(propId,value) 来修改,value 就是
你想要设置成的新值。
5.2 从文件中播放视频
5.3 保存视频
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc,20.0,(640,480))
while(cap.isOpened()):
ret,frame = cap.read()
if ret == True:
frame = cv2.flip(frame,0) # 图像的翻转
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()