用于图像处理的OpenCV简介
OpenCV是实时计算机视觉、图像处理和机器学习库的集合。它支持很多编程语言,如c++、java、python。在本文中,我们将通过将开放式简历用于图像处理来学习它的基础知识。
安装
让我们从创建虚拟环境开始。
$ virtualenv venv
$ source venv/bin/activate
现在我们将安装OpenCV。
$ pip install opencv-python
我们将从基础开始,并在前进的过程中增加复杂性。
下载图片
在我们开始之前,让我们先有一个共同的形象。如果请求模块不工作,您可以执行$pip安装请求
读取、写入和显示图像
我们将使用imread读取图像。它有两个参数文件名和标志。在下面的示例中,我们将图像读取为灰度,因此我们使用IMREAD_GRAYSCALE。如果您想按原样读取图像,可以使用IMREAD_UNCHANGE作为标志。它将使用对应于像素的数据创建一个numpy.ndarray。我们使用imshow来显示数据。和IMWRITE以保存OpenCV数据。
waitKey(0)将等待任何键盘输入。0指定不确定的时间量。一旦它得到输入,它就会关闭。
裁剪图像
由于图像是一个二维Numpy数组,我们可以使用数组切片来裁剪图像。这里我们裁剪图像,行在500到900之间,列在400到600之间。
这里我们添加了一个过滤来检查按下的键是不是Q键,只有当键是Q键时才会关闭所有的窗口。
旋转图像
在OpenCV中使用旋转功能可以方便地旋转图像。我们可以选择顺时针或逆时针方向旋转。如果您为操作180旋转,则不需要指定方向,您可以直接添加Rotate_180。
如果您精明,那么我们将waitKey添加为1000毫秒。每隔1000毫秒,我们就会将图像旋转90度。将显示更新后的图像。
调整图像大小
利用形状可以得到当前图像的大小。
output:
IMREAD_UNCHAGE映像的IMREAD返回3个参数
- Height表示图像中的像素行数。
- Width表示图像中的像素列数。
- 通道数表示用于表示每个像素的组件数。
- 通道数为3表示其为RGB图像。在灰度中,像素从0到255表示。在rgb中,每个像素表示在0-16777216之间(256³=16777216)。有时您会看到通道数为4。这表示为RGBA,其中参数A(Alpha)表示图像的透明度。
我们可以用不同的方法调整图像的大小。
基于比例因子的重新缩放
我们可以只传递fx作为x的比例因子,传递fy作为y的比例因子。
注意:当我们缩小比例时,我们会重新调整像素比例。当我们升级时,我们将需要通过插值新的像素来重建图像。
INTERLINE是一种调整图像大小为2×2相邻像素并取插值像素的加权平均值的方法。还有其他的方法。我们会去的
基于高度和宽度重新缩放
我们将高度设置为200,宽度设置为150。对他们来说,就像我们在前进中自然地移动一样。
注:我们必须手动处理纵横比。
更改图像的颜色
我们可以使用cvtColor函数将图像的颜色转换为不同的颜色。
我们正在使用matplotlib添加子情节。如果您尚未安装matplotlib,请运行以下命令
$ pip install matplotlib
$ apt install python3-tk
并不是说我们在IMSHOW中超过了Cmap。这样做的原因是imshow在单通道图像中添加了自己的密钥,以使其本身更容易。我们需要更改显示图像的方式。
边缘检测
我们首先将图像加载为灰度图像,以降低使用图像时的计算成本。然后我们使用高斯过滤对图像进行模糊处理,以平滑图像并去除噪声。因为原始图像会产生噪声边缘。
然后,我们使用精明的过滤通过搜索相邻像素的亮度突变来检测图像中的边缘。精明的过滤有两个门槛。如果像素梯度大于阈值2,我们将其视为边缘。如果它低于下限阈值1,我们将拒绝该图像。
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/29/%e8%ae%a9%e6%88%91%e4%bb%ac%e5%ad%a6%e4%b9%a0opencv/