自学笔记:python+opencv针对蓝色来进行简单的车牌定位
图像处理的自学之路
车牌定位
看了几个其他人的文章,综合选取了几个方法凑在一起。
def location_demo(img):
image = cv.resize(img,(600,600))
#对读取图片做大小调整
hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV)
#把获取的图片从BGR调整到HSV,便于颜色筛选
hsv = cv.medianBlur(hsv,3)
#对图像中值滤波
blue_lower = np.array([100,43,46])
blue_upper = np.array([124,255,255])
color_choose = cv.inRange(hsv,blue_lower,blue_upper)
#HSV格式蓝色范围
erod = cv.erode(color_choose,None, iterations=3)
#对图像进行腐蚀
dilate =cv.dilate(erod,None, iterations=1)
#对图像进行膨胀
image1, contours , hierarchy = cv.findContours(dilate,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)
#对图像进行轮廓检测
for i in range(len(contours)):
#对所有检测到的轮廓进行按(车牌)面积筛选
cnt = contours[i]
area = cv.contourArea(cnt)
#求轮廓面积
if area > 3000 :
#范围可以自己根据实际情况调试
rect = cv.minAreaRect(cnt)
#对所选取的面积求矩形最小面积
box = cv.boxPoints(rect)
#矩形点信息提取
box = np.int0(box)
print(area)
#个人爱好,观察下面积大小- -!
image = cv.drawContours(image, [box], -1, (0, 0, 255), 5)
#矩形绘画
return image
capture = cv.VideoCapture(0)
#摄像头调用,如果只有一个摄像头的话cv.VideoCapture()参数为0,如果是视频的话需要完整的地址
while True:
ret, frame = capture.read()
#视频每帧读取
if ret == True:
frame=location_demo(frame)
#函数调用
cv.imshow("vehicle plate location",frame)
cv.waitKey(10)
#视频输出
capture.release()
cv.destroyAllWindows()
喜欢对生活中的东西做研究,从图像入手。