opencv——图像的读取、展示、保存

读取图像

注意:路径不能有中文,否则读取图像返回的结果为None,不会报错

import cv2 as cv
img = cv.imread('.\图像\img.png')
print(img) # 返回None,因为在路径中不能有中文

img_ = cv.imread('.\img\img.png')
print(img_) # 返回像素值


参数介绍:def imread(filename, flags=None):

  • filename:图像的路径
  • flags=None:表示如何读取这幅图片,下面介绍介绍一下有哪些方法,这些方法既可以使用前面的值,也可以使用后面的数字代替。
flags含义
cv.IMREAD_ANYCOLOR=4原图读取
cv.IMREAD_ANYDEPTH = 2不论什么位深度。如果载入的图像是16-bit位图或者32-bit位图。则转化为8-bit位图。
cv.IMREAD_COLOR=1读入一副彩色图像。图像的透明度会被忽略,这是默认参数。
cv.IMREAD_GRAYSCALE=0以灰度模式读入图像
cv.IMREAD_LOAD_GDAL=8使用gdal驱动程序加载图像。
cv.IMREAD_UNCHANGED=-1不改变读取的是原图。读入一幅图像,并且包括图像的 alpha 通道

展示图像

固定窗口读取

opencv读取的图像是BGR格式,框的大小是图像的大小,不可以改变

import cv2 as cv
img_ = cv.imread('.\img\img.png')
cv.imshow('img',img_)
cv.waitKey(0)  # 等待
cv.destroyAllWindows() # 销毁所有的窗口

参数介绍:def imshow(winname, mat):

  • winname:窗口的名字
  • mat:需要展示的图像

改变通道顺序,将BGR转为RGB

import matplotlib.pyplot as plt
import cv2 as cv

# 转换格式,将BGR转为RGB

img_ = cv.imread('.\img\img.png')
# 方法1
img = cv.cvtColor(img_,cv.COLOR_BGR2RGB)
# 方法2
b,g,r = cv.split(img) # 先拆分通道
img2 = cv.merge([r,g,b]) # 将拆分的通道按照RGB格式合并

plt.imshow(img)
plt.show()

修改窗口的大小

如果想修改窗口的大小,需要提前定义一个窗口,参数设置为cv.WINDOW_NORMAL

import cv2 as cv
cv.namedWindow('image',cv.WINDOW_NORMAL) # 定义一个窗口
img_ = cv.imread('.\img\img.png')
cv.imshow('image',img_)
cv.waitKey(0)
cv.destroyAllWindows()

保存图像

import cv2 as cv
img_ = cv.imread('.\img\img.png')
cv.imwrite('output.jpg',img_)

销毁窗口

  • cv.waitKey()
    是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下,这个后面我们会接着讨论。

  • cv2.destroyAllWindows() :
    可以轻易删除任何我们建立的窗口。删除所有的窗口

  • cv2.destroyWindow()
    删除指定的窗口在括号内输入你想删除的窗口名。

输入任意键都销毁窗口

cv.waitKey(0) # 一直等待,当有键盘输入就会触发事件,执行下面的销毁窗口
cv.destroyAllWindows()

特定的键销毁窗口

while True:
	i =cv.waitKey(0) 
	if i==27: # Esc的ASCII为27
		cv.destroyAllWindows()
		break

# 特定键销毁
while True:
	i =cv.waitKey(0) 
	if i==ord('q'): # 按q键退出,ord函数可以计算ASCII
		cv.destroyAllWindows()
		break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值