【问题标题】:OpenCV to recognize image using pythonOpenCV使用python识别图像
【发布时间】:2017-01-16 05:27:13
【问题描述】:

我是 OpenCV 的新手。 我正在使用 OpenCV 3.1 和 python 2.7。

我有 5 张自行车图片和 5 张汽车图片。 我想知道任何图像是汽车还是自行车。

在网上我发现使用 haar cascade 我们可以训练, 但大多数示例只包含一种训练数据意味着,用户将只训练汽车图像和 使用查询图像,他们会尝试找到它是否是汽车, 但我想检查它是汽车还是自行车或什么都没有。

我想根据对象的形状匹配图像。 我正在考虑的另一个选择是获取查询图像并与存储的图像进行比较,并根据相似性给出结果。但我知道这会花费更长的时间,这并不好。

还有更好的选择吗?还有模板匹配,但我不知道哪种方案更适合这种解决方案,因为我不了解 OpenCV。

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    【讨论】:

    • 谢谢拉胡尔,我检查一下
    【解决方案2】:

    关于您关于 haar 级联的问题。您可以使用它们以您想要的方式对图像进行分类:

    训练两个哈尔级联,一个用于汽车,一个用于自行车。两个级联都将返回一个值,说明它们的确定程度,即图像包含他们训练的对象。如果两者都不确定,则图像可能不包含任何内容。否则,您会以对图像内容的确定性更高的方式上课。

    【讨论】:

    • 感谢 sietschie 的回复。你能给我举个例子吗?
    • 不具体。但是here 你可以看到如何从 haar 级联分类器中获得置信度。
    【解决方案3】:

    您可以尝试通过将您的训练数据(汽车和自行车的图像)上传到demo.nanonets.ai(免费使用)来构建模型

    1) 在此处上传您的训练数据:

    demo.nanonets.ai

    2) 然后使用以下(Python 代码)查询 API:

    import requests
    import json
    import urllib
    model_name = "Enter-Your-Model-Name-Here"
    url = "http://blog.caranddriver.com/wp-content/uploads/2015/11/BMW-2-series.jpg"
    files = {'uploadfile': urllib.urlopen(url).read()}
    url = "http://demo.nanonets.ai/classify/?appId="+model_name
    r = requests.post(url, files=files)
    print json.loads(r.content)
    

    3) 响应如下:

    {
      "message": "Model trained",
      "result": [
        {
          "label": "Car",
          "probability": 0.97
        },
        {
          "label": "Bike",
          "probability": 0.03
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-08
      • 2013-03-13
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多