OpenCV 对图像进行处理时,常用API如下:
API | 描述 |
---|---|
cv.imread | 根据给定的磁盘路径加载对应的图像,默认使用BGR方式加载 |
cv.imshow | 展示图像 |
cv.imwrite | 将图像保存到磁盘中 |
cv.waitKey | 暂停一段时间,接受键盘输出后,继续执行程序 |
cv.destroyAllWindows | 释放所有资源 |
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
'''设置不使用科学计数法'''
# 保留小数点后三位
# 设置不适用科学计数法
np.set_printoptions(precision=3, suppress=True)
cv2.imread(filepath,flags)
参数:
filepath:要读入图片的完整路径
flags:读入图片的标志,即默认是使用BGR模型加载图像
当设置为0时,表示灰度图像加载
当设置为1时,表示加载BGR图像, 默认为1
当设置为-1时,表示加载alpha透明通道的图像,即4通道
数据格式:
cv2.imread()的默认通道格式HWC,即img.shape
作用:
加载图像
如果图像加载失败,那么返回的对象img为None
特别注意:
CV读取的数据为BGR
cv.imshow(winname, mat)
参数:
winname:显示图像的窗口名称
mat: 传入的图像
注意:
CV读取BGR图像
img = cv.imread("rabbit.png")
# 图像可视化
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()
img = cv.imread('chicken.png')
'''写法一'''
img2 = img[:500, :400]
# 图像可视化
cv.imshow('image', img2)
cv.waitKey(0)
cv.destroyAllWindows()
'''写法二'''
# 图像可视化
cv.imshow('image', img[:500, :400, :])
cv.waitKey(0)
cv.destroyAllWindows()
【注意】
matplotlib读取RGB图像
img = cv.imread("chicken.png")
print(img.shape) # (583, 831, 3)
target_img = np.zeros_like(img, dtype=img.dtype) # 用0填充相同shape的图像
print(target_img.shape) # (583, 831, 3)
# plt读取的R、B通道值有误
target_img[:,:,0] = img[:,:,0]
target_img[:,:,1] = img[:,:,1]
target_img[:,:,2] = img[:,:,2]
plt.imshow(target_img)
plt.show()
# plt读取正确的R、B通道值
target_img[:,:,0] = img[:,:,2]
target_img[:,:,1] = img[:,:,1]
target_img[:,:,2] = img[:,:,0]
plt.imshow(target_img)
plt.show()
cv.cvtColor(src, code, dst=None, dstCn=None)
参数:
src:输入图像
code:颜色空间转换码
dst:输出图像;大小、深度和原图像一致
dstCn:
目标图像的通道数;
如果参数是0,通道数自动由src和code决定
作用:
转换一种颜色空间到另一种颜色空间
img = cv.imread("chicken.png")
# 颜色空间转换
plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
plt.show()
cv.waitKey( )
作用:
让图像暂停delay毫秒
参数:
当delay=0时,表示永远暂停; 直至键盘任意输入的时候,结束暂停
当delay>0时,若在delay毫秒期间没有键盘输出值,则返回-1;否则返回键
返回值:
有返回值,返回值为输入字符对应的ASCII码
即:waitKey返回值的范围为(0-255)
转换:
chr ( )
ord ( )
# 读取图像数据
img = cv.imread("chicken.png")
# 根据不同的输入进行图像的操作
cv.imshow('image', img)
# 键盘输入为ESC时,输出k值并关闭图像窗口;否则,将图片另存为名为news.png新图片并关闭图像窗口
# 等待键盘的输入
k = cv.waitKey(0) & 0xFF
if k == 27: # ESC(ACSII) = 27
print(k)
cv.destroyAllWindows()
# 当输入的是其他键的时候
else:
cv.imwrite('news.png', img)
cv.destroyAllWindows()
cv.destroyAllWindows()
感谢阅读🌼
如果喜欢这篇文章,记得点赞👍和转发🔄哦!
有任何想法或问题,欢迎留言交流💬,我们下次见!
本文相关代码存放位置
【Opencv1 图像的读取与显示】
祝愉快🌟!
更多【计算机视觉-OpenCV | 图像读取与显示】相关视频教程:www.yxfzedu.com