gpt4 book ai didi

java - JavaCV HoughCircles方法的参数如何传递和使用

转载 作者:行者123 更新时间:2023-11-30 07:51:59 25 4
gpt4 key购买 nike

我正在尝试使用 HoughCircles 的 JavaCV 实现方法,但我在参数方面遇到了一些问题。这是我的代码:

Mat currentImageGray = tgtFrag.getImage().clone();
Mat detectedCircles = new Mat();

HoughCircles(currentImageGray, detectedCircles, CV_HOUGH_GRADIENT, 1, 2, 254, 25, tgtFrag.getImage().rows() / 4, 0 );

if (detectedCircles != null && !detectedCircles.empty()) {
// TO DO:
// Print the center and the raidus of the detected circles.
}

首先,检测结果(HoughCircles 的第二个参数)以 Mat (DetectedCircles) 形式给出。

我想处理 DetectedCircles Mat 并以某种方式在控制台上打印圆的中心和半径。到目前为止,我的尝试失败了:我一直在尝试使用 FloatBufferIndexer 迭代 DetectedCircles,可能是正确的方向,但我还没有成功,任何人都可以提供帮助?

请注意以下事项:

  • 我使用的是 JavaCV,而不是 openCV。
  • 我使用的是 JavaCV HoughCircles,而不是 cvHoughCircles(不过使用 cvHoughCircles 的解决方案也可以)。
  • 我使用的是最新版本的 JavaCV,即 1.0(2015 年 7 月)。

最佳答案

我只能使用 JavaCV cvHoughCircles 方法,但不知道如何使用 HoughCircles 方法。这是我对您的代码的改编。

// Get the source Mat.
Mat myImage = tgtFrag.getImage();
IplImage currentImageGray = new IplImage(myImage);
CvMemStorage mStorage = CvMemStorage.create();

CvSeq detectedCircles = cvHoughCircles(currentImageGray, mStorage, CV_HOUGH_GRADIENT, 1, 2, 254, 25, tgtFrag.getImage().rows() / 4, 0);

if (detectedCircles != null && detectedCircles.total() > 0) {

for (int i = 0; i < detectedCircles.total(); i++) {
CvPoint3D32f curCircle = new CvPoint3D32f(cvGetSeqElem(detectedCircles, i));

int curRadius = Math.round(curCircle.z());
Point curCenter = new Point(Math.round(curCircle.x()), Math.round(curCircle.y()));

System.out.println(curCenter);
System.out.println(curRadius);
}

}

尽管这不能直接解决您的问题,但我希望这可以有所帮助。

关于java - JavaCV HoughCircles方法的参数如何传递和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com