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

相关推荐
youcans_5 天前
【AI辅助编程】ROP 图像预处理
图像处理·人工智能·ai编程·辅助编程
sali-tec5 天前
C# 基于OpenCv的视觉工作流-章27-图像分割
图像处理·人工智能·opencv·算法·计算机视觉
saoys5 天前
Opencv 学习笔记:腐蚀操作 + 轮廓标记 + 分水岭分割
笔记·opencv·学习
saoys5 天前
Opencv 学习笔记:距离变换(DIST_L1 算法实战 + 归一化)
笔记·opencv·学习
unicrom_深圳市由你创科技5 天前
医疗设备专用图像处理板卡定制
图像处理·人工智能·fpga开发
guygg885 天前
图像匹配技术:相关匹配、Hausdorff距离匹配与基于距离变换的Hausdorff距离匹配
图像处理·opencv·计算机视觉
qq_526099135 天前
图像采集卡:机器视觉系统的“数据中枢”,解锁精准成像新可能
图像处理·数码相机·计算机视觉·自动化
AI科技星5 天前
物理世界的几何建构:论统一场论的本体论革命与概念生成
人工智能·opencv·线性代数·算法·矩阵
fie88895 天前
基于Matlab实现的指纹识别系统流程
opencv·计算机视觉·matlab
sali-tec6 天前
C# 基于OpenCv的视觉工作流-章26-图像拼接
图像处理·人工智能·opencv·算法·计算机视觉