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

相关推荐
Dfreedom.18 小时前
图像直方图完全解析:从原理到实战应用
图像处理·python·opencv·直方图·直方图均衡化
Dfreedom.19 小时前
图像处理中的对比度增强与锐化
图像处理·人工智能·opencv·锐化·对比度增强
Pyeako1 天前
opencv计算机视觉--LBPH&EigenFace&FisherFace人脸识别
人工智能·python·opencv·计算机视觉·lbph·eigenface·fisherface
格林威1 天前
Baumer相机水果表皮瘀伤识别:实现无损品质分级的 7 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·opencv·计算机视觉·视觉检测·工业相机·sdk开发·堡盟相机
movigo7_dou1 天前
工业相机镜头参数和选型
图像处理·数码相机
爱打代码的小林1 天前
基于 OpenCV 与 Dlib 的人脸替换
人工智能·opencv·计算机视觉
西部秋虫1 天前
迷你视频会议系统(FlashMeeting)
opencv·ffmpeg·视频会议·回声抑制
智驱力人工智能1 天前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
XX風1 天前
8.1 PFH&&FPFH
图像处理·算法
光泽雨1 天前
检测阈值 匹配阈值分析 金字塔
图像处理·人工智能·计算机视觉·机器视觉·smart3