OpenCV读取、显示、写入图像

本文介绍了如何使用OpenCV库在Python中读取、显示和保存图像,包括imread(), imshow(), imwrite()函数的应用,并探讨了BGR转RGB的处理技巧。同时,展示了如何通过matplotlib展示OpenCV图像的不同方式。
摘要由CSDN通过智能技术生成

1. cv.imread()用于读取图像。

  • 参数一:图像的路径(工作目录下图像名字或完整路径)。
  • 参数二:指定读取图像的方式。
    ①cv.IMREAD_COLOR(或整数1):加载彩色图像(RGB三通道)(默认值)
    ②cv.IMREAD_GRAYSCALE(或整数0):加载灰度图像
    ③cv.IMREAD_UNCHANGED(或整数-1):加载图像,包括alpha通道(全通道)

2. cv.imshow()用于显示图像

  • 参数一:窗口名称。
  • 参数二:需要显示的图像对象。

代码示例:

import cv2 as cv
img = cv.imread('C:\\Users\\dell\\Desktop\\prac files\\prac.jpg',0)
print(img)
cv.imshow('prac', img)
cv.waitKey(0)
cv.destroyAllWindows()

其中,

cv.waitKey()为键盘绑定函数,参数为整数,意为等待键盘事件等待的毫秒数,若为0,则无限等待。

cv.destroyAllWindows()会破坏所有创建的窗口。

cv.destoryWindow()会破坏指定窗口,参数为窗口名称。

如果需要指定窗口大小是否需要调整,则需要使用**cv.namedWindow()**创建一个空窗口来加载图像。

  • 参数一:窗口名称。
  • 参数二:指定是否可以调整窗口大小
    ①cv.WINDOW_AUTOSIZE(或整数1)(不可调整)
    ②cv.WINDOW_NORMAL(或整数0)(可调整)

代码示例:

import cv2 as cv
img = cv.imread('C:\\Users\\dell\\Desktop\\prac files\\prac.jpg',1)
cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

3.cv.imwrite()用于写入图像。

  • 参数一:文件名称。
  • 参数二:需要保存的图像。

图像以PNG或JPG格式保存到工作目录,取决于文件名称的结尾。

代码示例:

import cv2 as cv
img = cv.imread('C:\\Users\\dell\\Desktop\\prac files\\prac.jpg',0)
cv.imshow('prac', img)
cv.waitKey(0)
cv.imwrite('changed.jpg', img)

4.使用matplotlib进行图片输出

由于OpenCV读取的图像是BGR格式,而使用matplotlib进行输出需要按照常规的RGB格式输出,所以需要将读取的BGR图像数据变换为RGB图像数据。

代码示例:

img = cv.imread('C:\\Users\\dell\\Desktop\\prac files\\prac.jpg',1)
b, g, r = cv.split(img)    #将img数据分为B、G、R三通道数据并分别存储

# 以下为不同方式将BGR对调为RGB
img2 = cv.merge([r, g, b])
img3 = img[...,::-1]
img4 = cv.cvtColor(img, cv.COLOR_BGR2RGB)

plt.subplot(2, 2, 1)
plt.title('1')
plt.imshow(img)
plt.xticks([]), plt.yticks([])

plt.subplot(2, 2, 2)
plt.title('2')
plt.imshow(img2)
plt.xticks([]), plt.yticks([])

plt.subplot(2, 2, 3)
plt.subplot(2, 2, 3)
plt.title('3')
plt.imshow(img3)
plt.xticks([]), plt.yticks([])

plt.subplot(2, 2, 3)
plt.subplot(2, 2, 4)
plt.title('4')
plt.imshow(img4)
plt.xticks([]), plt.yticks([])
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值