OpenCV-错误检测

问题描述 投票:0回答:1

我是一年级的学生,我只知道一点蟒蛇。对于一个项目,我需要使用OpenCV来检测几个交通标志。我在网上搜索了一下,我决定使用Haar-Cascade分类器。我按照本教程:haar-cascade

我训练了这个标志的代码left-sign到目前为止一切都很好。然而,我的代码(用3000正面1500负jpgs和完成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

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

python opencv python-3.5 haar-classifier
1个回答
0
投票
  1. 正确的方法:你需要添加很多正确的标志。
  2. 最好的方法:不要使用haar-cascade。
  3. 最简单的方法:训练第二个分类器(例如朴素贝叶斯),用于比较你级联后的左右标志。特点:图像之间的相关性,胡矩等。
© www.soinside.com 2019 - 2024. All rights reserved.