小编Cal*_*lin的帖子

Python和OpenCV.如何检测图像中的所有(已填充)圆/圆形对象?

我正在尝试制作一个打开图像的程序,扫描它的圆形/圆形并返回坐标,以便我可以使用该cv.Circle功能在检测到的圆上绘制圆圈.

我的问题是:如何使用cv.HoughCircles()?获取图像中检测到的圆的坐标/半径?

使用这个页面,我发现了如何检测圆圈(这花了我很多时间才发现,因为我不理解像阈值这样的术语,而Python的OpenCV文档真的很差,几乎没有).不幸的是,在该页面上没有显示如何提取从CvMat创建的每个圆圈中获取的信息.如何提取该信息/是否有其他方式(例如MemoryStorage())?

到目前为止这是我的代码:

import cv, opencv

def main():


    im = cv.LoadImageM("Proba.jpg")

    gray = cv.CreateImage(cv.GetSize(im), 8, 1)
    edges = cv.CreateImage(cv.GetSize(im), 8, 1)

    cv.CvtColor(im, gray, cv.CV_BGR2GRAY)
    cv.Canny(gray, edges, 50, 200, 3)
    cv.Smooth(gray, gray, cv.CV_GAUSSIAN, 9, 9)

    storage = cv.CreateMat(im.rows, 1, cv.CV_32FC3)

    cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100)
    # Now, supposing it found circles, how do I extract the information?
    print storage.r



if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

另外,HoughCircles为了让我能够检测出真正的小圆圈(如屏幕上的3mm),最后两个参数需要具有什么值?

谢谢大家的时间和精力来帮助我! …

python geometry opencv image-processing detect

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

如何在Android上录制音频并更改音高?

我正在尝试学习Android开发,我想知道如何从麦克风中捕获音频,然后更改音频中的声音,使其听起来更浓或更清晰等等.简而言之:如何录制和更改声音的参数?(在java中,当然)

java audio android attributes

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

Java从数组中获取元素,编辑它,然后将其存储在另一个数组中,而不更改第一个数组

我在我的一个Java项目中遇到了一个问题,导致错误.问题听起来如下:

我有两个数组.我们先将它们命名为Array和secondArray.在这种情况下,对象是由我创建的单独类.它工作,数组可以填充该类型的对象.

Object[] firstArray= new Object[];
Object[] secondArray = new Object[];
Run Code Online (Sandbox Code Playgroud)

现在,当我从第一个数组中获取一个元素,编辑它然后在第二个数组中复制它时,第一个数组中的对象也会被改变.

tempObj = firstArray[3];
tempObj.modifySomething();
secondArray[3] = tempObj;
Run Code Online (Sandbox Code Playgroud)

每当我这样做时,第一个数组的(在这种情况下)第3个元素(实际上是第4个)得到修改.我不想要这个.我希望第一个数组保持不变,未修改,我从第一个数组中提取然后修改的对象应存储在第二个数组中,以便第二个数组实际上是运行某些代码后的第一个数组.

PS即使我使用Array.get(Array,index)从第一个数组中获取元素然后修改它,该元素仍会在第一个数组中被修改.

希望你能理解我想说的话,如果是的话,请借给我一只手:)

谢谢!

java arrays element

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