配置:Ubuntu20.04、vsode、anaconda3、python
大二本科生,有一些Python基础,现在学习一些opencv的基本操作,之后会做一些机械臂抓取中的识别问题
一方面好记性不如烂笔头嘛,另一方面是做个记录,督促自己学习。如果能给其他新手带来一点点帮助就更好啦!额,是学到中途才想起来写博客的,所以就先从目前学习的部分开始写起,前面的部分后面会赶上的。
目前是跟着官方教程进行学习,网址如下:https://docs.opencv.org/4.x/index.html
我看的是4.10的版本,几个版本之间差别不是很大,可以先看这个。
点开opencv-Python教程,目前我学到了opencv中的图像处理——平滑图像。
本节的目的是学会使用低通滤波器模糊图像。
首先尝试了平均滤波器,内核是一个5*5的矩阵,将内核下方对应的25个像素取平均值替换中间的像素,对图像的所有像素进行这样的操作。
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('opencv_logo.png')
assert img is not None, "file could not be read, check with os.path.exists()"
kernel = np.ones((5,5),np.float32)/25
dst = cv.filter2D(img,-1,kernel)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.show()
代码如上,这些教程里基本都会涉及到numpy、opencv、matplotlib这几个库,需要提前下载。
图片的路径记得修改为自己的路径。
我用的是之前一张梅西的图片,可以看到效果。
接下来对代码稍微解读一下,前面的导入库和图片不说了。
这部分是创建一个卷积核,除以25是为了最后的总和为1。
kernel = np.ones((5,5),np.float32)/25
这里是使用cv.filter2D函数对图像进行滤波处理,第一个参数是输入图像,第二个是目标图像的深度,-1表示与输入图像相同,第三个是卷积核
dst = cv.filter2D(img, -1, kernel)
后面就是一些显示图像标题什么的命令了,不过多阐述了。