OpenCV错误检测

时间:2019-02-18 21:12:44

标签: python opencv python-3.5 haar-classifier

我是一年级CS学生,而且我只知道一点点python。对于一个项目,我需要使用OpenCV来检测多个交通标志。我在网上搜索了一下,然后决定使用Haar-Cascade分类器。我遵循了本教程:haar-cascade

我训练了此标志left-sign的代码 到目前为止,一切都很好。但是我的代码(训练有3000个正1500个负jpg并完成了8个阶段)可以检测到左右符号。代码需要分别识别左右标志,因为我的目的是命令机器人左转或右转。

这是我的代码:

import numpy as np
import cv2

ok_cascade = cv2.CascadeClassifier('new_kocum.xml')
cap = cv2.VideoCapture(0)

while 1:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    oks = ok_cascade.detectMultiScale(gray,3,5)
    for (x,y,w,h) in oks:
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,0),2)
        font = cv2.FONT_HERSHEY_SIMPLEX
        cv2.putText(img,'ok',(x-w,y-h), font, 0.5, (11,255,255), 2, cv2.LINE_AA)
    cv2.imshow('img',img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

这是正确的标志:right-sign

所以我的问题是:是否可以仅通过更改代码来解决该问题?如果更容易,应该使用哪种方法检测这些迹象?

1 个答案:

答案 0 :(得分:0)

  1. 正确的方法:您需要向负数添加很多正确的符号。

  2. 最好的方法:不要使用haar-cascade。

  3. 最简单的方法:训练第二个分类器(例如朴素的贝叶斯),以便在层叠后进行左右符号的比较。功能:图像之间的相关性,Hu-Moments等。

相关问题