OpenCV(开源计算机视觉库)是一个用于计算机视觉和图像处理的跨平台库。它是由Intel发起并由多个贡献者维护的一个项目,现已被广泛应用于各种商业产品中。

OpenCV支持多种编程语言,如C++、Python等,并且可以在Windows、Linux、Android和Mac OS等操作系统上运行。

主要特点:

  • 丰富的功能:OpenCV包含了大量预处理、特征检测、物体识别、结构分析、3D重建、机器学习等功能。

  • 跨平台:可以在多种操作系统下使用。

  • 开源:基于BSD许可发布,允许免费用于商业和研究目的。

  • 社区活跃:拥有庞大的开发者和用户社区,提供了大量的教程和支持。

网址:

安装

使用如下命令安装openCV

pip install opencv-python

引入

import cv2

读取图像

使用imread读取图像

img = cv2.imread('image.jpg')
img = cv2.imread('image.jpg', flags=0)

对于flags的输入有如下三个选项:

  • 1: 加载彩色图像

  • 0: 加载灰色图像

  • -1: 加载包含alpha通道的图像

读取后的图像为numpy数组, 若为彩色图像, 则为三维数组,其颜色格式默认为BGR

如果想转换成RGB,使用如下代码:

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

显示图像

img = cv2.imread('image.jpg')
cv2.imshow('test_show_image', img) # test_show_image为窗口名,可以为None或者任意字符串
cv2.waitKey(0) # 等待任意键盘按键输入
cv2.destroyAllWindows() # 销毁所有窗口
cv2.destroyWindow("test_show_image") # 销毁指定窗口,根据上面定义的窗口名看

写入图像

cv2.imwrite('new_image.jpg', img)

获取图像属性

获取图像形状

img.shape # (height, width, channel)

返回tuple,格式为(height, width, channel),就是高,宽,通道数

获取图像的大小

img.size

获取图像某个像素的值

前面我们知道了,cv2读取的图像是一个numpy数组,所以我们可以直接使用索引来获取某个像素的值

b, g, r = img[1, 1] # 获取第1行第1列的像素值

若读取的图像为彩色图(包含多个颜色通道,通常是RGB或BGR),那么读取的像素值将是一个包含三个元素的数组或元组,分别代表每个颜色通道的值

这里的b,g,r分别对应蓝色、绿色和红色通道的值(以openCV默认格式来看)。每个值介于0到255之间的整数。

若读取的图像为灰度图(只包含一个通道),那么读取的像素值将是一个整数值,表示该像素的灰度级。这个值通常在0到255之间,其中0表示黑色,255表示白色。

注意:

  • 像素坐标通常是按照(行,列)(y,x)的顺序指定的

  • 如果图像包含其他颜色模式,比如HSV或YUV,那么返回的像素值将对应这些颜色空间中的各个分量。

修改图像某个像素的值

img[1, 1] = [255, 255, 255] # 将第1行第1列的像素值修改为白色

调整图像大小

resized = cv2.resize(img, (width, height), interpolation=cv2.INTER_AREA)

其中widthheight为缩放后的图像的宽和高,interpolation为插值方法,常用的插值方法有:

  • cv2.INTER_NEAREST:最近邻插值

  • cv2.INTER_LINEAR:双线性插值(默认)

  • cv2.INTER_CUBIC:双三次插值

  • cv2.INTER_AREA:区域插值

旋转图像

(h, w) = img.shape[:2] # 获取图像的长或者宽
center = (w // 2, h // 2) # 取图像的中心点
M = cv2.getRotationMatrix2D(center, angle, scale) # 获取旋转后的图像矩阵
rotated = cv2.warpAffine(img, M, (w, h)) # 应用旋转

其中angle为旋转角度,scale为缩放比例,M为旋转矩阵,rotated为旋转后的图像。

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
人工智能 python 第三方库 个人分享 深度学习 人工智能
喜欢就支持一下吧