我目前正在开展一个项目,我正试图检测一些平躺在平面上的硬币(即桌子).硬币不重叠,不会被其他物体隐藏.但可能有其他物体可见,照明条件可能不完美...基本上考虑自己拍摄你的桌子上有一些硬币.
所以每个点都应该是椭圆形.由于我不知道相机的位置,椭圆的形状可能会有所不同,从圆圈(从顶部看)到扁平椭圆,取决于硬币拍摄的角度.
我的问题是,我不知道如何提取硬币,最后在它们上面放置椭圆(我正在寻找进一步的计算).
现在,我刚刚通过在OpenCV中设置阈值进行了第一次尝试,使用findContours()获取轮廓线并拟合椭圆.不幸的是,轮廓线很少给我硬币的形状(反射,光线不好......),这种方式也不是首选,因为我不希望用户设置任何阈值.
另一个想法是在该图像上使用椭圆的模板匹配方法,但由于我不知道相机的角度和椭圆的大小,我认为这不会很好...
所以我想问一下是否有人能告诉我一种方法可以解决我的问题......
有没有快速的方法从图像中提取三个硬币?计算应该在移动设备上实时进行,并且该方法对于不同或变化的灯光或背景的颜色不应过于敏感.
如果有人能给我任何关于哪种方法对我有用的提示,那会很棒...
我的问题与识别图片中的颜色有关.做微生物学我需要计算用显微镜照相机拍摄的照片上存在的细胞核数量.我用GIMP用红色点标记原子核.现在我需要在python中创建一个脚本,给出一个图像,它会告诉我有多少个红点.除了点之外,图片中没有红色.
我想到了一个相当复杂的解决方案,可能不是最好的解决方案:拍照并开始迭代检查每个颜色的像素.如果是红色,请检查所有8个最近的像素,再次递归检查每个红色的邻居,直到找不到更多相邻的红色像素.然后将核数增加1并标记遍历的像素,这样它们就不会再次迭代.然后从停止的地方继续迭代.看起来有点沉重所以我想我会问,也许有人已经更优雅地处理了类似的问题.
此致,桑德
我有一个看起来与此图像相同的图像:
.
它是曲线上页面上的一系列圆圈,每次都是不同的.
from PIL import Image
im = Image.open("bride.jpg")
Run Code Online (Sandbox Code Playgroud)
导入后,我想知道是否有区分颜色的方法.例如,这可能是:
[Purple, Cyan, Purple, Cyan, Purple Cyan...]
Run Code Online (Sandbox Code Playgroud)
该行没有任何模式,并且是几千个圆长,这意味着它不能手动完成.另请注意,我实际测试的图像质量要高得多,实际图像可以在这里找到.
我正在开发一个检测图像中圆形形状的程序。我认为 Hough 变换是最好的,我在 OpenCV 库中找到了一个。问题是,当我尝试使用它时,出现了一个我不知道如何修复的错误。Python 的 OpenCV 没有完全实现吗?是否有修复程序运行所需的库?
这是代码:
import cv
#cv.NamedWindow("camera", 1)
capture = cv.CaptureFromCAM(0)
while True:
img = cv.QueryFrame(capture)
gray = cv.CreateImage(cv.GetSize(img), 8, 1)
edges = cv.CreateImage(cv.GetSize(img), 8, 1)
cv.CvtColor(img, gray, cv.CV_BGR2GRAY)
cv.Canny(gray, edges, 50, 200, 3)
cv.Smooth(gray, gray, cv.CV_GAUSSIAN, 9, 9)
storage = cv.CreateMat(1, 2, cv.CV_32FC3)
#This is the line that throws the error
cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100)
#cv.ShowImage("camera", img)
if cv.WaitKey(10) == 27:
break
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
OpenCV 错误:未知函数中的空 pinter (),文件 ..\..\..\..\ocv\openc\src\cxcore\cxdatastructs.cpp,第 408 行 Traceback(最近一次调用):文件“ellipse-检测 …