Opencv_Python 官方教程 第一章 Opencv中的Gui特性

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值