相关疑难解决方法(0)

检测图像上的硬币(和拟合椭圆)

我目前正在开展一个项目,我正试图检测一些平躺在平面上的硬币(即桌子).硬币不重叠,不会被其他物体隐藏.但可能有其他物体可见,照明条件可能不完美...基本上考虑自己拍摄你的桌子上有一些硬币.

所以每个点都应该是椭圆形.由于我不知道相机的位置,椭圆的形状可能会有所不同,从圆圈(从顶部看)到扁平椭圆,取决于硬币拍摄的角度.

我的问题是,我不知道如何提取硬币,最后在它们上面放置椭圆(我正在寻找进一步的计算).

现在,我刚刚通过在OpenCV中设置阈值进行了第一次尝试,使用findContours()获取轮廓线并拟合椭圆.不幸的是,轮廓线很少给我硬币的形状(反射,光线不好......),这种方式也不是首选,因为我不希望用户设置任何阈值.

另一个想法是在该图像上使用椭圆的模板匹配方法,但由于我不知道相机的角度和椭圆的大小,我认为这不会很好...

所以我想问一下是否有人能告诉我一种方法可以解决我的问题......

有没有快速的方法从图像中提取三个硬币?计算应该在移动设备上实时进行,并且该方法对于不同或变化的灯光或背景的颜色不应过于敏感.

如果有人能给我任何关于哪种方法对我有用的提示,那会很棒...

opencv image image-processing image-recognition

44
推荐指数
3
解决办法
4万
查看次数

使用OpenCV和机器学习进行简单的对象检测

我必须使用OpenCV编码一个物体探测器(在这种情况下,一个球).问题是,google上的每一次搜索都会返回一些带有FACE DETECTION的内容.所以我需要帮助从哪里开始,使用什么等.

一些信息:

  • 球没有固定的颜色,它可能是白色的,但它可能会改变.
  • 我必须使用机器学习,不必是一个复杂和可靠的,建议是KNN(这是更简单和更容易).
  • 在我所有的搜索之后,我发现计算样本球直方图像的直方图并将其教导到ML可能是有用的,但我主要关注的是球的大小可以并且将会改变(越来越远离相机)和我不知道要把什么传递到ML给我分类,我的意思是......我不能(或者我可以?)只测试每个可能尺寸的图像的每个像素(从5x5到WxH) )并希望找到积极的结果.
  • 可能存在不均匀的背景,如人,球后面的布等.
  • 正如我所说,我必须使用ML算法,这意味着没有Haar或Viola算法.
  • 此外,我想使用轮廓在Canny'ed图像上找到圆圈,只需要找到一种方法将轮廓转换为一行数据来教授KNN.

    所以...建议?

    提前致谢.;)

c c++ opencv image-processing object-detection

25
推荐指数
1
解决办法
6万
查看次数

iPhone OpenCV教程在形状识别方面的应用

我想做一些iPhone OpenCV应用程序来识别简单的形状,如通过相机的方形.

任何人都可以给我一个简单的教程吗?

c c++ opencv image-processing ios

17
推荐指数
1
解决办法
2万
查看次数

OpenCV cvFindContours - 如何分离轮廓的组件

我一直在玩OpenCV,并且有很多试验和错误已经设法学习如何检测照片中的圆圈(硬币).一切都很好,除非我直接将硬币放在一起(如下所示,忽略了第二张图像倒置的事实).

原始照片 找到轮廓

看起来因为硬币是如此接近,cvFindContours认为它们是同一个对象.我的问题是如何将这些轮廓分成单独的对象,或者获得已经分离的轮廓列表.

我用于cvFindContours的参数是:

cvFindContours( img, storage, &contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0) );
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议将不胜感激.

c geometry opencv image-processing object-detection

13
推荐指数
1
解决办法
3万
查看次数

OpenCV点目标检测未找到所有目标,并且发现圆圈是偏移的

我正试图检测黑/白点目标的中心,就像在这张照片中一样.我试过使用cv2.HoughCircles方法但是1,我只能检测2到3个目标,2,当我将找到的圆绘制回图像时,它们总是略微偏移.

我使用了错误的方法吗?我应该使用findContours还是完全不同的东西?

这是我的代码:

import cv2
from cv2 import cv
import os
import numpy as np

def showme(pic):
    cv2.imshow('window',pic)
    cv2.waitKey()
    cv2.destroyAllWindows()


im=cv2.imread('small_test.jpg')

gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

#I've tried blur,bw,tr...  all give me poor results.

blur = cv2.GaussianBlur(gray,(3,3),0)
n,bw = cv2.threshold(blur,120,255,cv2.THRESH_BINARY)
tr=cv2.adaptiveThreshold(blur,255,0,1,11,2)

circles = cv2.HoughCircles(gray, cv.CV_HOUGH_GRADIENT, 3, 100, None, 200, 100, 5, 16)

try:
    n = np.shape(circles)
    circles=np.reshape(circles,(n[1],n[2]))
    print circles
    for circle in circles:
        cv2.circle(im,(circle[0],circle[1]),circle[2],(0,0,255))
    showme(im)
except:
    print "no cicles found"
Run Code Online (Sandbox Code Playgroud)

这是我目前的输出:

c python opencv image-processing computer-vision

8
推荐指数
1
解决办法
7159
查看次数

将嘈杂的硬币重塑成圆形

我正在使用JavaCV(OpenCV包装器)进行硬币检测,但是当硬币连接时我有一点问题.如果我试图侵蚀它们以分离这些硬币,它们会松开它们的圆形形状,如果我试图计算每个硬币内部的像素,就会出现问题,因此一些硬币可能被错误地计算为更大的硬币.我想要做的是首先重塑它们并使它们像一个圆圈(等于该硬币的半径),然后计算它们内部的像素.

这是我的阈值图像:在此输入图像描述

这里是被侵蚀的图像:在此输入图像描述

有什么建议?或者有没有更好的方法来打破硬币之间的桥梁?

opencv image-processing javacv

7
推荐指数
2
解决办法
6850
查看次数

在轮廓 openCV 中查找直线

我正在使用 android openCV,我想检测图像中的三角形、矩形和圆形。所以我这样做:Canny => findContours => approxPolyDP 并得到这个图像: ImageShack.us 托管的图片


但是,approxPolyDP 的结果包含很多顶点,所以我无法确定它是哪种形状。为了消除顶点,我想检测每个轮廓中的线并找到它们的交点。我怎样才能为单个轮廓做到这一点?

android opencv contour

6
推荐指数
1
解决办法
6794
查看次数

如何在OpenCV中检测已知对象?

我试着在窗口中实时绘制形状.形状类似于缠结,矩形,圆形,半圆形或圆形,屏幕中的"Z"使用黄色.尺寸和形状可能与原始图像不同.但程序知道所有原始形状.因为它们是预定义的.我想知道如何识别正确的形状.举个例子,

在此输入图像描述

有可能这样做吗?我可以使用模板匹配吗?请在这件事上给予我帮助..

opencv real-time shape detection template-matching

5
推荐指数
1
解决办法
2790
查看次数