758 字
4 分钟
OpenCV:安装、读取图像、显示图像、保存图像

1. OpenCV安装#

主库#

  • 主库OpenCV核心团队维护
Terminal window
pip install opencv-python

贡献库#

  • 贡献库OpenCV社区成员开发和维护
  • 优势包含的视觉应用比主库更全面
    • 注意点:包含了一些受专利保护的算法,商用时予以关注
Terminal window
pip install opencv-contrib-python

2. 读取图像:cv2.imread()#

  • 函数cv2.imread()用来读取图像,支持多种静态图像格式。
img = cv2.imread(filename[, flags])
  • img返回值,其值是读取到的图像数据。如果读取图像失败,则返回None
  • filename图像的文件名(可包含路径)
  • flags读取标记,该标记控制读取文件的类型
含义数值
cv2.IMREAD_UNCHANGED保持原格式不变-1
cv2.IMREAD_GRAYSCALE把图像转换成单通道的灰度图像后读取0
cv2.IMREAD_COLOR将图像转换成三通道的BGR彩色图像后读取(默认值1
cv2.IMREAD_ANYDEPTH16位或32位深度的图像在读取时,按照16位或32位深度的图像读取;默认按8位深度的图像读取2
cv2.IMREAD_ANYCOLOR以任意可能的彩色格式读取图像4
cv2.IMREAD_REDUCED_GRAYSCALE_2将图像转换成单通道的灰度图像,并将图像尺寸缩小为原来的1/2
cv2.IMREAD_REDUCED_GRAYSCALE_4将图像转换成单通道的灰度图像,并将图像尺寸缩小为原来的1/4
cv2.IMREAD_REDUCED_GRAYSCALE_8将图像转换成单通道的灰度图像,并将图像尺寸缩小为原来的1/8
cv2.IMREAD_REDUCED_COLOR_2将图像转换成三通道的BGR彩色图像,并将图像尺寸缩小为原来的1/2
cv2.IMREAD_REDUCED_COLOR_4将图像转换成三通道的BGR彩色图像,并将图像尺寸缩小为原来的1/4
cv2.IMREAD_REDUCED_COLOR_8将图像转换成三通道的BGR彩色图像,并将图像尺寸缩小为原来的1/8
cv2.IMREAD_IGNORE_ORIENTATION不会根据EXIF格式图像的方向设置旋转图像

支持的图像格式#

  • .bmp
  • .jpg, jpeg
  • .png
  • .webp
  • .pbm, .pgm, .ppm, .pxm, .pnm
  • .tiff

3. 保存图像:cv2.imwrite()#

  • 函数cv2.imwrite()用来保存图像
ret = cv2.imwrite(filename, img[, params])
  • ret返回值。如果图像保存成功,返回True,否则,返回False
  • filename图像的文件名(可包含路径)
  • img图像数据
  • params保存类型的参数,可选。

4. 显示图像#

新建窗口:cv2.namedWindow()#

  • 函数namedWindow()用来创建指定名称的窗口
None = cv2.namedWindow( winname )

显示图像:cv2.imshow()#

  • 函数imshow()用来显示窗口如果窗口不存在,将自动创建新窗口
None = cv2.imshow( winname, img )

等待按键:cv2.waitKey()、ord()#

  • 函数waitKey()用来等待按键,当用户按下键盘按键后,该语句会被执行,并获取返回值
ret = cv2.waitKey( [delay] )
  • ret返回值。如果按键没有被按下,则返回**-1**,否则,返回该按键对应的ASCII码
  • delay等待键盘触发的时间,默认为0。值为零或负数时,表示无限等待。时间单位为ms。

释放窗口:cv2.destroyWindow()、cv2.destroyAllWindows()#

  • 函数destroyWindow()用来释放指定名称的窗口
None = cv2.destroyWindow( winname )
  • 函数destroyAllWindows()用来释放所有窗口
None = cv2.destroyAllWindows()

5. 示例#

import cv2
# imread
img = cv2.imread("logo.png")
# imwrite
ret = cv2.imwrite("logo-new.png", img)
# imshow
cv2.imshow("OpenCV", img)
cv2.waitKey(3000)
# close all windows
cv2.destroyAllWindows()
封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00