我必须使用OpenCV编码一个物体探测器(在这种情况下,一个球).问题是,google上的每一次搜索都会返回一些带有FACE DETECTION的内容.所以我需要帮助从哪里开始,使用什么等.
一些信息:
此外,我想使用轮廓在Canny'ed图像上找到圆圈,只需要找到一种方法将轮廓转换为一行数据来教授KNN.
所以...建议?
提前致谢.;)
我一直在开发一个应用程序来计算圆形物体,如图片中的细菌菌落.
容易的是这些物体通常与背景明显不同.
但是,很少有困难使分析变得棘手:
这个问题已在科学文献中多次解决并"解决",例如,使用圆形Hough变换或分水岭方法,但我从未对结果感到满意.
这是描述的一个简单的方法是通过获得自适应阈值和分裂前景(如我在描述这个交使用距离变换)的群集对象.
我已经成功地实现了这种方法,但它并不总能处理强度的突然变化.此外,同行们也要求我提出更"新颖"的方法.
因此,我正在寻找一种新方法来提取前景.
因此,我研究了其他阈值/斑点检测方法.我尝试了MSER但发现它们不是很强大而且在我的情况下非常慢.
我最终提出了一种算法,到目前为止,它给了我很好的结果:
只是为了向您展示我必须使用的图像类型:
该图片代表顶部3个样本图像的一部分,以及底部各个部分的算法结果(蓝色=前景).
这是我的C++实现:3-7
/*
* cv::Mat dst[3] is the result of the absolute difference between original and convolved channel.
* MCF(std::vector<cv::Point>, int, int) is a filter function that returns an positive int only if the input contour is valid.
*/
/* Allocate 3 matrices (1 per channel)*/
cv::Mat accu[3];
/* We define the …Run Code Online (Sandbox Code Playgroud) 我想用OpenCV for Android检测省略号,使用OpenCV 2.4.1包中的Tutorial 2-Basic作为起点.请注意,我的椭圆将是一个完美的Photoshop.
根据我的理解,使用"HoughCircles"只会找到完美(或如此)的圆圈,从而留下椭圆.
任何帮助都会非常感激,因为我是OpenCV的初学者
这是我到目前为止所尝试的
case Sample2NativeCamera.VIEW_MODE_CANNY: (ignore the Canny mode...)
capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);
Imgproc.HoughCircles(mGray, mCircles, Imgproc.CV_HOUGH_GRADIENT, 1, 20);
Log.d("Ellipse Points", " X " + mCircles.get(1,1)[0] + mCircles.get(1, 1)[1]);
break;
Run Code Online (Sandbox Code Playgroud)
如果您认为任何更多信息可能有用,请告诉我.
我正试图检测黑/白点目标的中心,就像在这张照片中一样.我试过使用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)
这是我目前的输出:

我是python的新手并且卡住了......
我想创建一个python脚本,允许我将图像上的相邻粒子分开,如下所示:

进入这样的不同地区:

我被建议使用分水岭方法,据我所知它会给我这样的东西:

EDIT 实际上发现这是距离变换而不是分水岭
然后,我可以使用阈值来分隔它们.遵循这个openCV分水岭指南,但它只能切割出颗粒.无法"转换"代码以执行我想要的操作.
然后我采取了另一种方法.试图使用openCV轮廓,这给我提供了良好的粒子轮廓.然后我一直在寻找一种简单的方法来执行多边形偏移,以便像这样缩小边缘:

使用偏移轮廓(多边形)的中心应该给出粒子的数量.但是我只能找到一种简单的方法来使用python进行边缘偏移/多边形收缩.
我目前正在开发一种能够拍摄现有硬币图像的Android应用程序,或使用内置相机扫描单个硬币(非常像Google Goggles).我正在使用OpenCV for Android.
我的问题如下:使用OpenCV在Android上执行硬币识别最合适的方法是什么?
我到目前为止尝试的方法如下(也许我做错了,或者我只是完全走错了路线)
我目前正在使用OpenCV for Android(没有本机代码!),并且正在使用各种特征检测算法来识别图像中的关键点(即ORB,FAST,STAR).我相信这只是计算提取图像中的每个关键点与一组已知测试数据之间的欧几里德距离来识别最相似的图像(因此识别硬币),但事实证明,单独的方法是不合适的,因为照明,硬币旋转等效果对特征提取有太大的影响(加上硬币具有惊人相似的特征......)
一般来说,我正在寻找有关任何形式的预图像处理是否有用的建议?有哪些替代方法?或者有关如何改进现有方法的任何提示.
注意:我看过很多关于硬币检测的文件,但我特别关注硬币识别.
提前致谢!
我有两个图像处理问题,我正在使用Open-CV处理.
方案1和2的示例图像;
1

2

两个图像都有三种类型的感兴趣对象.(三种颜色或尺寸)
我遇到的技术包括阈值处理,然后使用像素计数的侵蚀,使用RGB值进行颜色分割.
什么是良好的工作链,什么是开始的好地方?