前言
同学要做拧魔方机器人,但是他对视觉识别方面的知识不太明白,于是我帮他完成了识别魔方色块边缘的功能,过程中学习了不少可以用于图像处理的函数。下面我会先详解每一个函数,然后再给出整合后的代码。
环境配置:我是在anaconda上配置的python3.8的环境,用Jupyter Notebook来编写运行代码。
函数详解
魔方图片:
先对目标图像进行预处理:
imgobj = cv2.imread('CV_img/test2.jpg')
gray = cv2.cvtColor(imgobj, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
canny = cv2.Canny(blurred, 20, 40)
kernel = np.ones((3,3), np.uint8)
dilated = cv2.dilate(canny, kernel, iterations=2)
#闭运算,先膨胀再腐蚀,可以填充孔洞(√)
dilated=morphology.dilation(dilated,morphology.square(8))
dilated=morphology.erosion(dilated,morphology.square(8))
cv2.imread先读取测试图片;
cv2.cvtColor(p1,p2) 是颜色空间转换函数,p1是需要转换的图片,p2是转换成何种格式。cv2.COLOR_BGR2GRAY 是将BGR格式转换成灰度图片;
cv2.GaussianBlur是高斯滤波,是平滑滤波的一种方法,而Canny算子是边缘检测的一种算法,通过这两个函数对图像进行滤波运算。