OpenCV中Gui特性

图片

读入图像

cv2.imread()函数是OpenCV中用于读取图像文件的函数,它可以读取多种图像格式,包括BMP、JPEG、PNG、GIF等常用的格式。以下是cv2.imread()函数的所有参数:

filename:要读取的图像文件的名称,可以是相对路径或绝对路径。

flags:指定读取图像的模式,可以使用以下常量之一来指定:
cv2.IMREAD_COLOR:默认参数,读取彩色图像,忽略 alpha 通道。
cv2.IMREAD_GRAYSCALE:读取灰度图像。
cv2.IMREAD_UNCHANGED:读取包含 alpha 通道的图像。

cv2.imread()函数返回一个numpy数组,包含了图像的像素信息,如果读取失败则返回None。

需要注意的是,cv2.imread()函数默认按照BGR顺序读取彩色图像,而不是常见的RGB顺序。因此,在使用cv2.imshow()函数显示图像时,需要先将BGR顺序转换为RGB顺序,或者使用cv2.cvtColor()函数将图像转换为RGB顺序。

import cv2
img1 = cv2.imread("voice.PNG",cv2.IMREAD_COLOR)
cv2.imshow("M1X1M1YA cv2.IMREAD_COLOR",img1)
img2 = cv2.imread("voice.PNG",cv2.IMREAD_UNCHANGED)
cv2.imshow("M1X1M1YA cv2.IMREAD_UNCHANGED",img2)
cv2.imshow("M1X1M1YA B",img2[:,:,0])
cv2.imshow("M1X1M1YA G",img2[:,:,1])
cv2.imshow("M1X1M1YA R",img2[:,:,2])
#输出下面图片但是会纯白色因为透明度的数字太大!所以要缩放
#cv2.imshow("M1X1M1YA alpha",img2[:,:,3])
#缩到0-255程度
img2_alpha= cv2.normalize(img2[:,:,3], None, 0, 255, cv2.NORM_MINMAX)
#单独展示透明通道
cv2.imshow("M1X1M1YA alpha",img2_alpha)
'''
如果您的PNG图像确实具有alpha通道,但是显示出来的alpha通道是全黑的,
这可能是因为alpha通道的值都被解释为0,即完全透明。这可能是因为读取PNG文件时,
某些程序版本默认情况下会忽略alpha通道,因此在读取时会将其值设为0。
'''
#查看图片的通道数量
channels = img2.shape[2]
print("img2 的通道数量",channels)

cv2.waitKey(0)

需要注意的是OpenCV的imread()函数不会提醒你没有读取到图片。

显示图片

cv2.imshow()函数时显示图像,窗口会自动调整为图像大小。
cv2.imshow(winname,pic),如果winname相同的两个imshow()函数只显示最后一个imshow的pic。
在显示图片时候需要的是暂停键,不然图像一下子会没了。所以可以使用cv2.waitKey()函数,cv2.waitKey()是一个键盘绑定函数,需要指出的是它的时间尺度是毫秒级,如果有键盘输入,函数返回值为键盘按键的ASCII码,ESC为27。如果设置为cv2.waitKey(0)那么永远等待键盘的输入。
cv2.destroyAllWindows()可以删除所有的窗口。如果想删除某一个窗口的话只需要在cv2.destroyAllWindows(“需要删除的窗口名字”)。
如果想调整窗口大小,在输出图片前把 cv2.namedWindow(‘窗口名’, cv2.WINDOW_NORMAL)写上就可以调整图片的大小了。

保存图片

cv2.imwrite(‘图片名’,图片)来保存图片

下面的程序将会加载一个灰度图,显示图片,按下’s’键保存后退出,或者按下 ESC 键退出不保存。

import numpy as np
import cv2

img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值