读取图像
cv.imread(filename,flags)
filename:图像的完整路径
flags:一个标志,读取图像的方式。常用的方式如下:
- cv.IMREAD_COLOR:加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。可以用1替代。
- cv.IMREAD_GRAYSCALE:以灰度模式加载图像。可以用0替代。
- cv.IMREAD_UNCHANGED:加载图像,包括alpha通道。可以用1替代。
import cv2 as cv img1=cv.imread('./images/lena.jpeg',cv.IMREAD_COLOR) img2=cv.imread('./images/lena.jpeg',cv.IMREAD_GRAYSCALE) img3=cv.imread('./images/lena.jpeg',cv.IMREAD_UNCHANGED)
显示图像
cv.imshow(winname,mat)
winname:窗口名称
mat:图像对象
cv.imshow('img1',img1) cv.imshow('img2',img2) cv.imshow('img3',img3) cv.waitKey(0) cv.destroyAllWindows()
cv.waitkey(delay)是一个键盘绑定函数。其参数是以毫秒为单位的时间。该函数等待任何键盘时间指定的毫秒。如果在这段时间内按下任何键,程序将继续运行。如果指定是0,它将无限期地等待一次敲击键。
cv.destroyAllWindows()销毁创建的所有窗口。如果要销毁任何特定的窗口,使用cv.destroyWindow()在其中传递确切的窗口名称作为参数。
cv.namedWindow(winname,flags) 用于创建一个具有合适名称和大小的窗口,以在屏幕上显示图像和视频。默认情况下,图像以其原始大小显示。
winname:显示图像或视频的窗口的名称。
flags:表示窗口大小自动设置还是可调整。
- cv.WINDOW_NORMAL:允许手动更改窗口的大小。
- cv.WINDOW_AUTOSIZE:自动设置窗口大小。默认。
- cv.WINDOW_FULLSCREEN:将窗口大小更改为全屏。
cv.namedWindow('img1',cv.WINDOW_NORMAL) cv.imshow('img1',img1) cv.imshow('img2',img2) cv.imshow('img3',img3) cv.waitKey(0) cv.destroyAllWindows()
写入图像
cv.imwrite(filename,img,params)
filename:文件名
img:保存的图像
import cv2 as cv img=cv.imread('./images/lena.jpeg') cv.namedWindow('img',cv.WINDOW_NORMAL) cv.imshow('img',img) k=cv.waitKey(0)&0XFF if k==0: cv.destroyAllWindows() if k==ord('s'): cv.imwrite('./images/lena_copy.jpg',img) cv.destroyAllWindows()
使用Matplotlib
Matplotlib是Python的绘图库,提供多种绘图方法。
import cv2 as cv from matplotlib import pyplot as plt img=cv.imread('./images/lena.jpeg',0) #读取灰色图像 plt.imshow(img,cmap='gray',interpolation='bicubic') plt.xticks([]) plt.yticks([]) plt.show()
注意:opencv加载的图像是处于BGR模式,但是matplotlib以RGB模式显示。如果使用opencv读取彩色图像,则matplotlib中将无法正确显示彩色图像。
需要特殊处理一下:
img=cv.imread('./images/lena.jpeg') # 读取彩色图像 img=img[:,:,[2,1,0]] # 将模式转换为GBR模式
完整代码
import cv2 as cv img1=cv.imread('./images/lena.jpeg',cv.IMREAD_COLOR) img2=cv.imread('./images/lena.jpeg',cv.IMREAD_GRAYSCALE) img3=cv.imread('./images/lena.jpeg',cv.IMREAD_UNCHANGED) print("img1:",img1.shape,img1.size,img1.dtype) # img1: (256, 256, 3) 196608 uint8 print("img2:",img2.shape,img2.size,img2.dtype) # img2: (256, 256) 65536 uint8 print("img3:",img3.shape,img3.size,img3.dtype) # img3: (256, 256, 4) 262144 uint8 cv.namedWindow('img1',cv.WINDOW_NORMAL) cv.imshow('img1',img1) cv.imshow('img2',img2) cv.imshow('img3',img3) cv.imwrite('./images/lena1.jpg',img1) cv.waitKey(0) cv.destroyAllWindows()
posted on
浙公网安备 33010602011771号