读取图像

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 2024-05-01 10:23  会飞的金鱼  阅读(24)  评论(0)    收藏  举报