作者感想
这是一个opencv的练习,我打算从现在每周练习一个实例,(前提是能找到一些实例);这些实例都是需要有一定基础的并且有一定的难度的。我打算做成一个系列。
这个系列会提供python版本,C++版本有时间的话也会更新。
车牌检测
思路
输入图像 -> 高斯模糊 -> 转灰度 -> 形态学黑帽 -> 二值化 -> 找包络 -> 通过阈值、面积筛选轮廓 -> 通过转HSV筛选出车牌
启发和亮点
1、对于图像处理一些比较常规的物体、特征时,真的要好好理解形态学这个重要的知识点。灵活运用开运算和闭运算,这个太重要了。
2、对于我比较薄弱的:cv2.minAreaRect();cv2.boxPoints();cv2.getAffineTransform()这几个函数的熟悉;
3、色彩空间的转换思路;
代码
原图:
高斯模糊:
car_img = cv2.GaussianBlur(car_img, (3,3), 0)
灰度 + 开运算
gray_car_img = cv2.cvtColor(car_img, cv2.COLOR_BGR2GRAY)
# open morph
kernel = np.ones((10,10),np.uint8)
open_morph_img = cv2.morphologyEx(gray_car_img, cv2.MORPH_OPEN, kernel)
cv2.imshow("open morph",open_morph_img)