python的cv2模块使用

发布时间 2023-11-30 11:26:44作者: 771293871

一.安装CV2(opencv)模块

  pip install opencv-python

二.使用imread读取图片

  使用函数cv2.imread(filepath,flags)读入一副图片

  • filepath:要读入图片的完整路径
  • flags:读入图片的标志
    • cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道。alpha通道代表透明度效果,取值0-1
    • cv2.IMREAD_GRAYSCALE:读入灰度图片,返回黑白图
    • cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道,返回彩色图
pic1=cv2.imread("D:/autotest/11.png",cv2.IMREAD_UNCHANGED)
pic2=cv2.imread("D:/autotest/11.png",cv2.IMREAD_GRAYSCALE)
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_COLOR)  

三.使用imshow显示图像

  • cv2.imshow(wname,img):第一个参数(wname)是显示图像的窗口的名字,第二个参数(img)是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小。
  • cv2.waitKey():等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
  • cv2.destroyAllWindow():销毁所有窗口
  • cv2.destroyWindow(wname):销毁指定窗口
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_COLOR)  #读取文件
cv2.imshow('pic3',pic3)   #显示图片
cv2.waitKey(5000)         #等待时间,单位ms
cv2.destroyAllWindows()    #关闭窗口

四.使用flip翻转图像

    使用函数cv2.flip(img,flipcode)翻转图像

  • img:读取的图像内容
  • flipcode:控制翻转效果,复制图像。
    •   flipcode = 0:沿x轴翻转,上下翻转
    •   flipcode > 0:沿y轴翻转
    •   flipcode < 0:x,y轴同时翻转
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_COLOR)
pic4=cv2.flip(pic3,0)
cv2.imshow('pic3',pic4)
cv2.waitKey(5000)
cv2.destroyAllWindows()

五.使用cvtColor转换颜色

cv2.cvtColor 是 OpenCV 库中的一个函数,用于转换图像颜色。基本语法为:

    cv2.cvtColor(src, code)

 

参数说明:

  • src:源图像,是一个三通道的图像(例如,BGR)。
  • code:转换的代码,这是一个特定的值,指定了要执行的颜色空间转换。例如,cv2.COLOR_BGR2GRAY 将把一个彩色图像转换为灰度图像。色调H、亮度L、饱和度S、亮度V、A透明度。以下是一些常见的 code 值:
    •   cv2.COLOR_BGR2BGRA:将 BGR 图像转换为 BGRA 图像(添加 Alpha 通道)。
    •   cv2.COLOR_BGR2GRAY:将 BGR 图像转换为灰度图像。
    •   cv2.COLOR_BGR2HSV:将 BGR 图像转换为 HSV 图像。
    •   cv2.COLOR_BGR2Lab:将 BGR 图像转换为 Lab 图像。
    •   cv2.COLOR_BGR2Luv:将 BGR 图像转换为 Luv 图像。
    •   cv2.COLOR_BGRA2BGR:将 BGRA 图像转换为 BGR 图像。
    •   cv2.COLOR_BGRA2GRAY:将 BGRA 图像转换为灰度图像。
    •   cv2.COLOR_BGRA2HSV:将 BGRA 图像转换为 HSV 图像。
    •   cv2.COLOR_BGRA2Lab:将 BGRA 图像转换为 Lab 图像。
    •   cv2.COLOR_BGRA2Luv:将 BGRA 图像转换为 Luv 图像。
    •   cv2.COLOR_GRAY2BGR:将灰度图像转换为 BGR 图像。
    •   cv2.COLOR_GRAY2BGRA:将灰度图像转换为 BGRA 图像(添加 Alpha 通道)。
    •   cv2.COLOR_GRAY2HSV:将灰度图像转换为 HSV 图像。
    •   cv2.COLOR_GRAY2Lab:将灰度图像转换为 Lab 图像。
    •   cv2.COLOR_GRAY2Luv:将灰度图像转换为 Luv 图像。
    •   cv2.COLOR_HSV2BGR:将 HSV 图像转换为 BGR 图像。
    •   cv2.COLOR_HSV2BGRA:将 HSV 图像转换为 BGRA 图像(添加 Alpha 通道)。
  • 返回值:转换后的图像。
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_COLOR)
pic4=cv2.cvtColor(pic3,cv2.COLOR_BGR2GRAY)  #返回黑白图
cv2.imshow('pic3',pic4)
cv2.waitKey(5000)
cv2.destroyAllWindows() 

六.使用putText给图像添加文本

cv2.putText 是 OpenCV 库中的一个函数,用于在图像上绘制文本。它可以将指定的文本绘制在图像上,并可以设置文本的字体、大小、颜色等属性。基本语法为:

    cv2.putText(img, text, org, font, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
  • img:要绘制文本的图像。
  • text:要绘制的文本字符串。
  • org:文本的起始坐标(即左下角坐标)。
  • font:要使用的字体。
  • fontScale:字体的大小比例,与字体大小有关。
  • color:文本的颜色。
  • thickness:文本线的宽度(如果为负数,则 OpenCV 会自动计算)。
  • lineType:线的类型。
  • bottomLeftOrigin:这个参数是False,坐标系统是从左上角到右下角,如果为True,则是从左下角到右上角。
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_COLOR)
Font=cv2.FONT_HERSHEY_DUPLEX   #使用的字体
pic4=cv2.putText(pic3,"Hello Word",(150,150),Font,1,(0,0,255),2,)   #使用的文本字符为中文时乱码
cv2.imshow('pic4',pic4)
cv2.waitKey(5000)
cv2.destroyAllWindows()

七.使用resize()缩放图像

resize() 是一个常见的函数,用于改变图像或视频的尺寸。用于调整视频的大小的方法是先读取视频帧,然后对每一帧进行大小调整。基本语法为:

  cv2.resize(img, (w,h), interpolation)

  • img:被缩放图片的内容
  • (w,h):缩放后的图像尺寸
  • interpolation:缩放图像的方法

 

    • cv2.INTER_NEAREST # 最邻近差值法
    • cv2.INTER_LINEAR # 双线性差值法
    • cv2.INTER_AREA # 基于局部像素的重采样法(cv2.INTER_AREA方法能够最大程度保证图像的缩放质量)
    • cv2.INTER_CUBIC # 三次差值法
    • cv2.INTER_LANCZOS4 # 基于8*8像素邻域的Lanczos差值法 
#读取图片内容
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_COLOR)
#对图片进行缩放 pic4=cv2.resize(pic3, (1800, 1600))
#显示缩放前后的图片 cv2.imshow('1111',pic3) cv2.imshow('12',pic4) cv2.waitKey(5000) cv2.destroyAllWindows() 

八.使用image.shape获取图像的维度信息

image.shape 是一个在Python的OpenCV库中常用的属性,用于获取图像的维度信息。对于彩色图像,通常每个像素包含三个通道(红、绿、蓝),而对于灰度图像,只有一个通道。image.shape返回一个元组,表示图像的尺寸。这个元组的元素个数取决于图像是彩色还是灰度。对于彩色图像,元组包含三个元素:高度、宽度和通道数(通常为3,对应红、绿、蓝)。对于灰度图像,元组包含两个元素:高度和宽度。例如,对于一个200x200像素的彩色图像,image.shape返回(200, 200, 3)。对于一个200x200像素的灰度图像,image.shape返回(200, 200)

#读入灰度图片,返回黑白图
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_GRAYSCALE) num_channels=pic3.shape print(num_channels)
输出:(720, 1280)
#使用cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道,返回彩色图
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_UNCHANGED)
#使用shape获取维度信息
num_channels=pic3.shape
print(num_channels)
输出:(720, 1280, 4) 

九.使用cv2.imwrite保存图片

cv2.imwrite 是 OpenCV 库中的一个函数,用于将图像写入文件。但是cv2.imwrite 函数只接受 BGR 格式的图像,而不是 RGB 格式。如果图像是 RGB 格式,需要使用 cv2.cvtColor 将其转换为 BGR 格式,然后再写入文件。基本语法为:

  cv2.imwrite(filename, img)

  • filename:要保存图像的文件名,包括文件格式,如 .jpg、.png 等。
  • img:要写入文件的图像,通常是一个 NumPy 数组。
#读取图片
pic3=cv2.imread("D:/autotest/11.png",cv2.IMREAD_COLOR)
#对读取的图片进行缩放 pic4=cv2.resize(pic3, (1800, 1600))
#将缩放后的图片pic4保存到D:/autotest,名称为13,格式为jpg的图片
cv2.imwrite("D:/autotest/13.jpg",pic4)