首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用不同方法寻找平板候选

用不同方法寻找平板候选
EN

Stack Overflow用户
提问于 2019-01-23 14:07:49
回答 1查看 226关注 0票数 1

我想用不同的方法来检测车牌候选人,但是在尝试了几次之后,我还是被困住了。我不知道我的方法是否正确。

我正在处理HSV图像模型.

到目前为止我对已知方法的看法。

  1. 预处理后的图像->形态变换、->斑点检测。
  2. 预处理后的图像->边缘检测,->在图像中查找矩形。
  3. 预处理图像->边缘检测->直方图投影->直方图分析

我不想把注意力集中在方法3上,因为其他人正在研究它。我应该在某个地方使用连接组件分析吗?

我使用高斯模糊和自适应阈值的BlackHat和TopHat操作来进行图像预处理。这是我的代码:

代码语言:javascript
运行
复制
imgHSV = np.zeros((self.height, self.width, 3), np.uint8)
imgHSV = cv.cvtColor(self.image, cv.COLOR_BGR2HSV)
_, _, self.imgValue = cv.split(imgHSV)
imgTopHat = np.zeros((self.height, self.width, 1), np.uint8)
imgBlackHat = np.zeros((self.height, self.width, 1), np.uint8)

structuringElement = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))

imgTopHat = cv.morphologyEx(self.imgValue, cv.MORPH_TOPHAT, structuringElement)
imgBlackHat = cv.morphologyEx(self.imgValue, cv.MORPH_BLACKHAT, structuringElement)
imgGrayscalePlusTopHat = cv.add(self.imgValue, imgTopHat)
imgGrayscaleHSV = cv.subtract(imgGrayscalePlusTopHat, imgBlackHat)

imgBlurred = np.zeros((self.height, self.width, 1), np.uint8)
imgBlurred = cv.GaussianBlur(imgGrayscaleHSV, GAUSSIAN_SMOOTH_FILTER_SIZE, 0)
thresholdedImage = cv.adaptiveThreshold(imgBlurred, 255.0, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY_INV, ADAPTIVE_THRESH_BLOCK_SIZE, ADAPTIVE_THRESH_WEIGHT)

通过对图像进行预处理,即对图像进行提取后,进行TopHat和BlackHat运算,进行高斯模糊和自适应阈值处理。我试着用simpleBlob来查找openCV,但是它不能很好地处理预先准备好的图像。在边缘检测方面,我采用了精明的边缘检测方法,并实现了sobel边缘检测。

示例处理的图像(我还没有足够的声誉发布图像.)

我希望输出的图像与潜在的板块候选人的轮廓,但我不能得到适当的转换图像与工作。我该怎么办?如何应用转换(以及类型)。

EN

回答 1

Stack Overflow用户

发布于 2019-01-24 14:32:03

我试着用不同的方法来检测平板:2和3。它们在实际中不起作用。

最好的方法-基于ML的。例如,在HAAR级联上最简单的。HOG + SVM效果较好。基于DNN的方法是最好的- 来自英特尔 预告 (您可以将它与opencv_dnn和OpenVINO推理引擎一起使用)。

不要在手工算法上浪费时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54329089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档