1、读取图像
首先导入opencv。
import cv2 as cv
如果没有安装,可以在cmd输入:
pip install opencv-python
来安装。
读取图像使用cv.imread()函数,第一个参数是文件名,第二个参数是标志,用于指定图像的读取方式。
cv.IMREAD_COLOR: 加载彩色图像。任何图像的透明度都会被忽视。
cv.IMREAD_GRAYSCALE:以灰度模式加载图像。
cv.IMREAD_UNCHANGED:加载图像,包括alpha通道。
如果不输入则默认第一种,也可以直接输入整数1、0、-1。
读取一下大名鼎鼎的lena标准测试图(图片须放在工作目录)
img = cv.imread("lena.tiff", 1)
img_gray = cv.imread("lena.tiff", 0)
img_alpha = cv.imread("lena.tiff", -1)
可以print(img)看看,发现是一大串数组。存储的是B、G、R通道的信息(opencv的颜色通道按照BGR排序,而非RGB)。
2、显示图像
显示图像用cv.imshow(),它也有两个参数,第一个是窗口名称,第二个是要显示的对象。
显示刚才读取的img
cv.imshow("img", img)
运行结果
多幅图片可以通过循环显示
先定义titles和images列表
titles = ["img", "img_gray", "img_alpha"]
images = [img, img_gray, img_alpha]
for循环显示
for i in range(3):
cv.imshow(titles[i], images[i])
剩下的两张图:
键盘输入任意键时关闭所有窗口
cv.waitKey(0)
cv.destroyAllWindows()
3、写入图像
cv.imwrite()可以保存图像,第一个参数是文件名,第二个是要保存的图像。
cv.imwrite('lena.jpg', img)
这样图像就会以jpg格式保存在工作目录中。
若想输入s保存图像并退出,输入esc不保存图像直接退出,则加入以下代码:
k = cv.waitKey(0) & 0xff
if k == 27: # 输入esc直接退出
cv.destroyAllWindows()
elif k == ord('s'): # 输入s保存并退出
cv.imwrite('lena.jpg', img)
cv.destroyAllWindows()
完整代码
import cv2 as cv
img = cv.imread("lena.tiff", 1)
img_gray = cv.imread("lena.tiff", 0)
img_alpha = cv.imread("lena.tiff", -1)
cv.imshow("img", img)
titles = ["img", "img_gray", "img_alpha"]
images = [img, img_gray, img_alpha]
for i in range(3):
cv.imshow(titles[i], images[i])
k = cv.waitKey(0) & 0xff
if k == 27: # 等待esc退出
cv.destroyAllWindows()
elif k == ord('s'): # 等待s,保存并退出
cv.imwrite('lena.jpg', img)
cv.destroyAllWindows()
附上Lena下载地址: Lena测试图.