Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在图像中识别三种类型的对象?_Python_Opencv_Image Processing_Classification - Fatal编程技术网

Python 如何在图像中识别三种类型的对象?

Python 如何在图像中识别三种类型的对象?,python,opencv,image-processing,classification,Python,Opencv,Image Processing,Classification,我想从卫星风图像中识别三个不同的物体。问题是其中三个有点相似。我尝试使用模板匹配来识别,但没有成功。三个目标如下 在这里,物体的方向并不重要,但线条中头部的类型很重要。您能建议一种方法继续吗?假设您的图像只包含纯黑色和纯白色像素 您可以为每个轮廓找到轮廓及其边界矩形或minareact 然后将这些矩形视为单独的图像,在轮廓上迭代。现在您可以对这些图像进行分类。您也可以使用模板匹配 祝你好运 你想过机器学习吗 例如,用于数字识别的小型cnn可以使用一小组图像“重新训练”,Keras还具有数

我想从卫星风图像中识别三个不同的物体。问题是其中三个有点相似。我尝试使用模板匹配来识别,但没有成功。三个目标如下


在这里,物体的方向并不重要,但线条中头部的类型很重要。您能建议一种方法继续吗?

假设您的图像只包含纯黑色和纯白色像素

您可以为每个轮廓找到轮廓及其边界矩形或minareact

然后将这些矩形视为单独的图像,在轮廓上迭代。现在您可以对这些图像进行分类。您也可以使用模板匹配


祝你好运

你想过机器学习吗

例如,用于数字识别的小型cnn可以使用一小组图像“重新训练”,Keras还具有数据增强功能,以帮助确保训练出鲁棒的分类器

有一个非常好的博客帖子 Yash Katariya发现@,在这个过程中,MNIST数据集被加载,网络被训练,为了使用ML解决您的问题,它经历了您需要的所有阶段

您提到您尝试过模板匹配,但是您也提到旋转并不重要,这对我来说意味着对象可以旋转,这将导致TM失败

您可以查看LBP(本地二进制模式),或者OpenCV的Haar分类器(不过它对旋转非常敏感)

除了我建议的项目之外,还有一个很棒的教程@,它使用了一些功能和机器学习,您可以从中受益,从而应用于这个问题


我希望在不直接回答您的问题的同时,我已经给了您一套工具,您可以使用这些工具花费一些时间和阅读来解决问题。

“我尝试了一些东西,但没有成功”作为起点的错误描述有点过于宽泛。在模板匹配中,我将这种类型的图像作为模板,只能识别少数对象(两个或三个)。我想从分布在图像上的大约100个对象中识别对象。模板匹配不适合大小变化或旋转。不过,它有可能会影响你的形象。cv2.MatchTemplate返回一个接近图像大小的数组(图像高度-模板高度,图像宽度-模板宽度),每个数组元素都有一个分数。因此,如果要在图像中搜索模板的多个实例,则必须自己检查cv2.MatchTemplate结果。minMaxLoc实际上只会给你一场比赛。这是一个很好的替代品