OpenCV 图像处理(一)

本章为 OpenCV 图像入门,主要讲解了如何加载图片,显示图片和保存图片。

读取图像

使用 cv.imread() 函数读取一张图像。

  • cv.IMREAD_COLOR:加载彩色图像,任何图像的透明度都会被忽略,它是默认标志;
  • cv.IMREAD_GRAYSCALE:以灰度模式加载图像;
  • cv.IMREAD_UNCHANGED:加载图像,包括 alpha 通道。

注意

  • 也可以简单分别传递整数1、0或-1,而不是这三个 flag。
python 复制代码
import numpy as np
import cv2 as cv

# 用灰度模式加载图像
img = cv.imread('01.jpg', 0)

注意

图像路径错误,它不会抛出任何错误,但是打印 img 会返回 None

显示图像

cv.imshow() 函数在窗口显示图像,窗口自动适应图像的大小。

  • 参数1:窗口名(str);
  • 参数2:图像

你可以根据需要创建任意数量的窗口,但是窗口名字要不同。

python 复制代码
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

cv.waitKey() 是一个键盘绑定函数,它的参数是以毫秒为单位的时间。该函数为任意键盘事件等待指定毫秒。如果你在这段时间内按下任意键,程序将继续。如果传的是0,它会一直等待键盘按下。它也可以设置检测特定的按键。

cv.destroyAllWindows() 销毁我们创建的所有窗口。如果你想销毁任意指定窗口,应该使用函数 cv.destroyWindow() 参数是确切的窗口名。

注意:

有一种特殊情况,你可以先创建一个窗口然后加载图像到该窗口。在这种情况下,你能指定窗口是否可调整大小。它是由这个函数完成的 cv.namedWindow()。默认情况下,flag 是 cv.WINDOW_AUTOSIZE。但如果你指定了 flag 为 cv.WINDOW_NORMAL,你能调整窗口大小。当图像尺寸太大,在窗口中添加滚动条是很有用的。
代码

python 复制代码
cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

保存图像

保存图像,使用函数 cv.imwrite()

  • 参数1:文件名;
  • 参数2:要保存的图像。
python 复制代码
# 将该图像保存为 PNG 格式
cv.imwrite('save.png', img)

总结

下面程序以灰度模式读取图像,显示图像,如果你按下 's' 会保存和退出,或者按下 ESC 退出不保存。

python 复制代码
import numpy as np
import cv2 as cv

img = cv.imread('image.jpg', 0)
cv.imshow('image', img)
k = cv.waitKey(0)
if k == 27: # ESC 
	cv.destroyAllWindows()
elif k == ord('s'): # s
	cv.imwrite('save.png', img)
	cv.destroyAllWindows()

注意:

如果你使用的是 64 位机器,你需要修改 k = cv.waitKey(0)k = cv.waitKey(0) & 0xFF

相关推荐
zmzb01032 小时前
Python课后习题训练记录Day194
python·opencv·计算机视觉
uncle_ll9 小时前
数字人JoyVASA 实战记录
图像处理·数字人·语音合成
欧特克_Glodon10 小时前
OpenCV计算机视觉开发入门与实践<十四>:基础几何图形绘制
人工智能·opencv·计算机视觉
PhotonixBay11 小时前
从粗糙度到三维形貌:激光共聚焦显微镜实现微米级表面分析
图像处理·人工智能·测试工具·算法
欧特克_Glodon11 小时前
OpenCV计算机视觉开发入门与实践<十六>:图像边框和图像轮廓
c++·人工智能·opencv·计算机视觉
格林威11 小时前
C#图像处理:使用imagemagick实现像素放大水印转换等多种功能
android·开发语言·图像处理·人工智能·计算机视觉·c#·视觉检测
W_326001 天前
Python-OpenCV 轮廓进阶:旋转最小外接矩形、图像矩求质心、嵌套层级 hierarchy、轮廓形状匹配
图像处理·python·opencv·机器学习·计算机视觉
牧羊人.3331 天前
计算机视觉基础 第 9 章|实战:银行卡号识别
图像处理·人工智能·opencv·计算机视觉·图搜索算法
欧特克_Glodon1 天前
OpenCV计算机视觉开发入门与实践<十三>:图像转换之灰度图、二值图
c++·人工智能·opencv·计算机视觉
AndrewHZ1 天前
图像处理入门010 | Pillow 与 OpenCV 对比:双库图像读写实战
图像处理·opencv·计算机视觉·pillow