图像读取与显示
图像理解:
- 灰度图 - 单通道
- 彩色图 - 三通道
图像读取与显示:
导包:
# 导入opencv支持
import cv2 as cv
- 加载图像的通道顺序
详细函数与参数:
- imread 函数, 读取图像
cv.imread(filename[, flags])
# 参数:
# filename 表示文件路径
# [] 内的参数表示是可省略的, 根据自己的需求选择是否填写, 后面不再说明
# 参数flags是一个可选参数,默认值为 "IMREAD_COLOR" 其枚举值(可设置值)的具体意义如下:
enum cv::ImreadModes {
cv::IMREAD_UNCHANGED = -1,
cv::IMREAD_GRAYSCALE = 0,
cv::IMREAD_COLOR = 1, # 默认
cv::IMREAD_ANYDEPTH = 2,
cv::IMREAD_ANYCOLOR = 4,
cv::IMREAD_LOAD_GDAL = 8,
cv::IMREAD_REDUCED_GRAYSCALE_2 = 16,
cv::IMREAD_REDUCED_COLOR_2 = 17,
cv::IMREAD_REDUCED_GRAYSCALE_4 = 32,
cv::IMREAD_REDUCED_COLOR_4 = 33,
cv::IMREAD_REDUCED_GRAYSCALE_8 = 64,
cv::IMREAD_REDUCED_COLOR_8 = 65,
cv::IMREAD_IGNORE_ORIENTATION = 128
}
- imshow 函数, 显示图像
cv.imshow(winname, mat)
# 参数:
# winname 表示窗口标题, 注意不支持中文的窗口标题
# mat 表示图像对象
显示图像, 可能会一闪而过, 所以可以如下设置相关代码:
cv.waitKey(0) # 表示会一直等待, 直到任意一个键盘操作
cv.waitKey(1000) # 表示等待1000毫秒, 也就是1秒
代码练习与测试:
我目前项目文件框架如下:
import cv2 as cv
import numpy as np
def show_image():
image = cv.imread('data/lena.jpg')
cv.imshow("lena", image)
cv.waitKey(1000)
cv.destroyAllWindows()
show_image()
图像显示如下:
给个小拓展, 之前遇到的坑:
注意下imread操作图像和用plt操作图像, 通道顺序是不一致的. 如果你遇到好好的图像, 显示的时候突然变青了, 那就是两者的通道顺序不一致导致的.
imread读取的通道顺序是BGR, plt操作的图像是RGB.
给你举个例子:
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
image = cv.imread('data/lena.jpg')
plt.imshow(image)
plt.show()
参考文章:
- https://blog.csdn.net/kids_budong_c/article/details/123905881
- https://blog.csdn.net/wenhao_ir/article/details/123074651
- https://blog.csdn.net/jia20003