OpenCV中的基本图像操作

Posted mini梁翊洲MAX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV中的基本图像操作相关的知识,希望对你有一定的参考价值。

1、加载图像

加载图像是图像处理的第一步
我们假设图像存放在py程序对应的根目录下,名字为pic.jpeg

import cv2
image=cv2.imread("pic.jpeg")
cv2.imshow("orig",image)
cv2.waitKey(0)

执行脚本后,将显示以orig为名的原图像(因为我们未作任何处理)

waitKey(0)指暂停脚本的执行,直到我们按下键盘上的键。使用参数“0”表示任何按键都会取消暂停执行。如果我们不使用这个函数,图像显示的瞬间就会被关闭,从而看不见显示的图像。

2、调整图像尺寸

在后期深度学习时,有的神经网络只接收特定尺寸的图像进行学习。因此,我们要会调整其尺寸。

获取图像的尺寸

print(image.shape)

我得到的结果是(382,750,3),这表示该图像有382行,750列和3通道。这里需要注意,如果用一个长方形的长和宽来比拟的话,行数代表宽度,列数代表长度,和我们平时的长宽说法习惯不同。

调整图像的尺寸

假设我们将图片的列数调整为250列,行数等比例调整

ratio=250/image.shape[1]
resized=cv2.resize(image,(250,int(image.shape[0]*ratio)),
interpolation = cv2.INTER_AREA)
cv2.imshow("resized", resized)
cv2.waitKey(0)

首先,我们的image.shape是一个numpy数组,索引是从0开始计数的。所以image.shape[0]指的是行数,image.shape[1]指的是列数,image.shape[2]指的是通道数。
因为我们这里想等比例缩放图像,所以求了一个比率ratio。
resize函数,第一个参数是输入的图像。第二个参数是要调整的尺寸,这里注意其输入为(列数,宽数),排列顺序和image.shape相反。我们这里还用了一个int类型变换,是因为我们的行数列数需要是整数。第三个参数interpolation是插值方法的选择,对于插值的详细说明可以查看这篇文章。除此之外还有其他一些参数,大家可以查看官方文档,但其实有这些就够了。

调整成(250,250)

3、裁剪图像

有时候我们只关心图像中的某一区域,因为一些不相关的区域可能对我们图像识别的结果会有影响。

cropped = image[0:100, 500:750]

这里依旧是(行,列),向切片提供startY和endY坐标,然后是startX和endX坐标。

4、保存图像

cv2.imwrite("test.png",cropped)

第一个参数是保存的路径(可以变更文件类型),第二个参数是要保存的图像。

“本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/kasami_/article/details/117362772。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。”

以上是关于OpenCV中的基本图像操作的主要内容,如果未能解决你的问题,请参考以下文章

Opencv图像基本操作——读取显示截取图像属性颜色通道边界填充图像融合

OpenCV 图片尺寸缩放——resize函数

OpenCV 图片尺寸缩放——resize函数

OpenCV教程(11)-- 图像压缩操作

OpenCV中的基本图像操作

图像的尺寸调整