Python 在红板图像上绘制等高线

Python 在红板图像上绘制等高线,python,opencv,image-processing,colors,opencv-drawcontour,Python,Opencv,Image Processing,Colors,Opencv Drawcontour,嗨,我正在做一个程序,需要找到车牌的轮廓,车牌的一切都很好,但是当我试图得到红色车牌的轮廓时,它不能正确显示轮廓,我检查将图像转换为灰色的所有结果,然后模糊图像,然后对图像设置阈值以实现查找轮廓,这些是图像: 原始图像: 灰度图像: 图像阈值: 查找等高线: 如图所示,我想得到阿拉伯数字周围的轮廓,但数字周围的阈值是白色和黑色的,所以它不能完美地包围阿拉伯数字 如图所示: 这是我处理两幅图像的代码: image = cv2.imread('red_image3.jpg') gray_

嗨,我正在做一个程序,需要找到车牌的轮廓,车牌的一切都很好,但是当我试图得到红色车牌的轮廓时,它不能正确显示轮廓,我检查将图像转换为灰色的所有结果,然后模糊图像,然后对图像设置阈值以实现查找轮廓,这些是图像:

原始图像:

灰度图像:

图像阈值:

查找等高线:

如图所示,我想得到阿拉伯数字周围的轮廓,但数字周围的阈值是白色和黑色的,所以它不能完美地包围阿拉伯数字

如图所示:

这是我处理两幅图像的代码:

image = cv2.imread('red_image3.jpg')

gray_image = extractValue(image)

imgMaxContrastGrayscale = maximizeContrast(gray_image)


imgBlurred = cv2.GaussianBlur(imgMaxContrastGrayscale, (3,3), 0)

imgThresh = cv2.adaptiveThreshold(imgBlurred, 255.0, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV,
                                  17, 9)
contours, _ = cv2.findContours(imgThresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

for contour in contours :
    (x,y,w,h) = cv2.boundingRect(contour)
    cv2.rectangle(image , (x,y) , (x+w,y+h),(0,255,0), thickness=1)

设定阈值不会给您带来好结果。尝试MSER特征提取和一些形态学操作,以得到您想要的。Opencv有一个很好的MSER实现。@Meisam你有什么可以帮助我的链接吗?我还是这个领域的新手只是谷歌一下:MSER Opencv python.hi很抱歉打扰你,我按照你的建议尝试了MSER方法,效果很好,但是该方法返回重叠矩形你知道消除重叠矩形的方法吗@MH304Try将每个数字的方框与大小信息分开。LP中每个数字的高宽比是固定的,所以您可以利用这个事实来提取它们。