OpenCV多图像检测

时间:2018-07-18 09:03:07

标签: python opencv image-processing

我正在尝试构建一种简单的图像检测算法,该算法将对不同的对象(例如塑料杯,瓶子,手机等)进行分类。使用openCV和python实现此目的的最佳方法是什么?谢谢

2 个答案:

答案 0 :(得分:0)

如果您正在寻找可以检测各种物体(即对给定图像进行分类)的算法或模型,则必须查看Conv Nets(CNN)。

CNN是一种深度学习模型,可以在要检测的图像类别上进行训练。以后,可以将不同的图像提供给训练有素的CNN以获得预测。

如果您对此内容感兴趣,建议您阅读this博客文章。

您可以尝试对图像进行一些图案匹配,但是如果变化很大,则准确性会大大降低。

答案 1 :(得分:0)

据我所知,您无法在OpenCV上训练/构建自己的网络。您宁愿使用OpenCV来加载预训练的模型并在一组图像上执行检测。

要创建新模型,您可以使用caffe,torch或tensorflow框架,并使用它在OpenCV中执行检测。

要执行检测,您需要执行以下操作:

  • 首先,确保已使用contrib模块编译了OpenCV。如果您不只是在您的终端上输入以下内容:pip install opencv-contrib-python
  • 首先确保您拥有cv2.dnn。如果您不这样做,则需要更新OpenCV的版本。
  • 现在,您可以从以下框架之一中选择模型:caffe,tensorflow,darkNet和Torch:
    • readNetFromCaffe
    • readNetFromDarknet
    • readNetFromTensorflow
    • readNetFromTorch
  • 选择框架后,选择一个预先训练的模型。您可以从HERE获得预训练的caffe模型,并从HERE获得tensorflow模型。在github上进行良好的搜索将为您提供更多模型。

在阅读this blogpost by Adrian之后,我遇到了dnn模块。

仅重申一下,您可以在OpenCV上使用预先训练的模型执行检测,但不能创建新模型。

如何运行预训练模型?

  1. caffe model= cv2.dnn.readNetFromCaffe(ResNet.prototxt.txt, ResNet.caffemodel),其中prototxt.txt文件包含架构,另一个文件包含模型权重。

  2. tensorflow model = cv2.dnn.readNetFromCaffe(ResNet.pb, ResNet.pbtxt),其中.pb文件包含netwrok体系结构,.pbtxt包含模型权重。

有关更多详细信息,请参见链接。