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

相关推荐
迈尔微视MRDVS2 小时前
全球叉车市场 2023 - 2032 年发展趋势:自动化、电商与电动叉车的崛起
运维·人工智能·opencv·计算机视觉·目标跟踪·机器人·自动化
东方佑5 小时前
图像清晰度计算
人工智能·opencv·计算机视觉
Byron Loong7 小时前
Python+OpenCV系列:膨胀和腐蚀——图像形态学操作深度解析
开发语言·python·opencv
〖是♂我〗8 小时前
OpenCV相关函数
图像处理·opencv·计算机视觉
Z2116133479 小时前
学习日志024--opencv中处理轮廓的函数
人工智能·opencv·学习·计算机视觉
jndingxin9 小时前
OpenCV相机标定与3D重建(20)将单应性矩阵分解为旋转矩阵、平移向量和法向量函数decomposeHomographyMat()的使用
opencv·3d
Tiandaren11 小时前
Python 参数配置使用 XML 文件的教程:轻松管理你的项目配置
xml·开发语言·图像处理·人工智能·python·深度学习
带带老表学爬虫11 小时前
opencv Canny边缘检测
人工智能·opencv·计算机视觉
行然梦实11 小时前
opencv-python连接计算机摄像头,连接手机摄像头
python·opencv·智能手机