Opencv-python根据阈值找出车牌的位置(目前只是蓝色车牌)

该博客探讨了一种车牌识别系统,主要针对蓝色车牌。通过图像缩小、滤波去噪、HSV颜色空间转换、阈值处理、腐蚀膨胀等步骤优化图像。然后应用Canny边缘检测找到车牌轮廓。尽管识别能力已有所提升,但部分图片仍存在识别问题。作者指出需要进一步改进。
摘要由CSDN通过智能技术生成

目前做的只是蓝色车牌,有一定的识别能力,但有些图片识别效果不太好。先记录一下,后面可能会用到。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/5/24 19:23
# @Author : 若谷
# @File : license_number_location.py
# @Software: PyCharm
import cv2 as cv
import numpy as np
import imutils

# 导入图片
img = cv.imread('./images/car1.jpg',1)
# cv.imshow('origin[0]',img)

# 缩小尺寸
resize = cv.resize(img,None,fx=0.5,fy=0.5)
cv.imshow('resize[1]',resize)

# 滤波去噪
denoised = cv.bilateralFilter(resize, 13, 15, 15)
cv.imshow('denoised[3]',denoised)

#  转换为HSV空间
hsv = cv.cvtColor(denoised, cv.COLOR_BGR2HSV)

# 设定阈值,阈值为自己确定
low = np.array([108, 94, 50])
high = np.array([131, 220, 207])

# 根据阈值构建掩膜
mask = cv.inRange(hsv, low, high)
# 对原图像和掩膜进行位运算
res = cv.bitwise_and(resize, resize, mask=mask)

# 显示结果
cv.imshow('res',res)
cv.imshow('mask',mask)

# 进行腐蚀和膨胀,先设置核大小
kernel = cv.getStructuringElement(shape=cv.MORPH_RECT,ksize=(3,3))

dilate = cv.dilate(mask,kernel,iterations=3)
cv.imshow('dilate',dilate)

erode = cv.erode(dilate,kernel,iterations=3)
cv.imshow('erode',erode)


# Canny边缘检测
edged = cv.Canny(image=erode, threshold1=30, threshold2=200)
cv.imshow('edged',edged)


contours,hierarchy = cv.findContours(image=edged.copy(), mode=cv.RETR_TREE, method=cv.CHAIN_APPROX_SIMPLE)
print('type(contours)=',type(contours)) # 'list'

cnt=contours[0]

# 这里,以最小面积绘制边界矩形,因此也考虑旋转。使用的功能是cv2.minAreaRect()。它返回一个Box2D结构,其中包含以下条件
#(中心(x,y),(宽度,高度),旋转角度)。
rect = cv.minAreaRect(cnt)

box = cv.boxPoints(rect)
box = np.int0(box)
resize=cv.drawContours(resize,[box],0,(0,0,255),2)

# x,y,w,h  = cv.boundingRect(contours[0])
# print('x= ',x)
# print('y= ',y)
# print('w= ',w)
# print('h= ',h)

# cv.rectangle(resize,(x,y),(w,h),color=(0,0,255),thickness=2)
cv.imshow('final',resize)

if cv.waitKey(0)&0xFF==27:
    cv.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

图片来自百度图片,马赛克是我自己打的。第三张没识别好。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值