pencv-python可以读取各类图片,然后对图像进行处理,结合矩阵操作,可以非常方便的对图像进行各类操作,下面就展示一个简单的demo,用opencv-python读取图像并展示出来。Opencv的库安装可能比较麻烦一点。
# 导入cv模块
import cv2 as cv
import numpy as np
# 读取图像,支持 bmp、jpg、png、tiff 等常用格式
# 第二个参数是通道数和位深的参数,有四种选择,参考https://www.cnblogs.com/goushibao/p/6671079.html
# 1彩色2灰度
img = cv.imread("sancun.tif", 1)
print(img)
print(img.shape)
print(img.dtype)
print(img.min())
print(img.max())
# 创建窗口并显示图像
cv.namedWindow("image", cv.WINDOW_NORMAL)
cv.imshow("image", img)
cv.waitKey(0)
# 释放窗口
cv.destroyAllWindows()
结果如图所示:
对于cv2,imread的关于通道数和位深的flags有四种选择:
IMREAD_UNCHANGED = -1#不进行转化,比如保存为了16位的图片,读取出来仍然为16位。
IMREAD_GRAYSCALE = 0#进行转化为灰度图,比如保存为了16位的图片,读取出来为8位,类型为CV_8UC1。
IMREAD_COLOR = 1#进行转化为RGB三通道图像,图像深度转为8位
IMREAD_ANYDEPTH = 2#保持图像深度不变,进行转化为灰度图。
IMREAD_ANYCOLOR = 4#若图像通道数小于等于3,则保持原通道数不变;若通道数大于3则只取取前三个通道。图像深度转为8位
对于多通道TIFF图像,若要保证图像数据的正常读取,显然要选择IMREAD_UNCHANGED作为imread的flags设置值。
参考博客: