【问题标题】:How to code a cat recognizer with OpenCV?如何使用 OpenCV 编写猫识别器?
【发布时间】:2021-09-19 22:36:42
【问题描述】:

我想使用 python 模块 face_recognition 编写带有 OpenCV 的猫识别器。
所以这段代码适用于humans面孔,使用haarcascade_frontalface_default.xml。 (这是培训计划)。

imagePaths = list(paths.list_images("recognition/dataset"))

knownEncodings = []
knownNames = []

# For each image, we analyze the face on it
for (i, imagePath) in enumerate(imagePaths):

    name = imagePath.split(os.path.sep)[-2]

    image = cv2.imread(imagePath)
    rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

    boxes = face_recognition.face_locations(rgb, model="hog")

    encodings = face_recognition.face_encodings(rgb, boxes)

    for encoding in encodings:
        knownEncodings.append(encoding)
        knownNames.append(name)

data = {"encodings": knownEncodings, "names": knownNames}

# We save the data in a file
f = open("recognition/encodings.pickle", "wb")
f.write(pickle.dumps(data))
f.close()

我尝试使用haarcascade_frontalcatface.xml 来识别。我记录了我的猫,但识别程序没有识别任何猫使用encodings.pickle。 Python 没有抛出任何错误。该程序对人类运行良好。
这个模块 (face_recognition) 对猫有用吗?
任何帮助都是有用的!

【问题讨论】:

  • haar 级联通常基于模式识别的训练。您可能需要自己创建一个用于猫的训练。
  • 我的程序使用 cat haarcascade 检测到猫,但是 face_recognition 没有识别出任何猫...
  • 我认为haarcascade_frontalcatface只能用于猫检测。没有提及识别 - 这肯定需要更深入的训练数据。
  • 是的。我不清楚。检测没有问题。问题是face_recognition 没有给出有效的编码。

标签: python python-3.x opencv face-recognition opencv-python


【解决方案1】:

查看haarcascade_frontalcatface.xml的源代码:

使用基本 Haar 特征集的正面猫脸检测器,即 水平和垂直特征,但不是对角线特征。

已知限制: 假定一个直立的主体。在猫的脸可能是 侧身或倒立(例如猫翻身),尝试各种旋转 输入图像。

您的输入数据是否符合这些预期?

【讨论】:

  • 问题不是检测而是识别。猫被正确检测到,但库 face_recognition 没有识别任何带有 encodings.pickle 的猫...
猜你喜欢
  • 2014-01-16
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 2019-02-04
  • 1970-01-01
相关资源
最近更新 更多