gpt4 book ai didi

Android OpenCv HoughCircles

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:43 24 4
gpt4 key购买 nike

我正在尝试使用 android-opencv 2.3.1 来识别图像中的圆圈(硬币)。然而,执行方法 Imgproc.cvtColor 时发生错误(org.opencv.cvException)。

File imgFile = new File(Environment.getExternalStorageDirectory() + "/test.jpg");
imageBmp = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

Mat mImg = new Mat();
mImg = Utils.bitmapToMat(imageBmp);
Mat mGray = new Mat(mImg.rows(), mImg.cols(), CvType.CV_8UC1, new Scalar(0));
Imgproc.cvtColor(mImg , mGray, Imgproc.COLOR_BGRA2GRAY, 4);
Imgproc.GaussianBlur( mGray , mGray , new Size(9, 9), 2, 2);
Mat circles = new Mat();
Imgproc.HoughCircles(mGray , circles, Imgproc.CV_HOUGH_GRADIENT, 1d, (double)
mGray.height() / 70, 200d, 100d);

我做错了什么?手机:三星 Galaxy S i9000


只需用新代码更新我的问题。它仍然通过“Imgproc.cvtColor”方法给出相同的错误。

File imgFile = new File(Environment.getExternalStorageDirectory() + "/test.jpg");
imageBmp = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
Mat mImg = new Mat();
mImg = Utils.bitmapToMat(imageBmp);
Mat mGray = new Mat(mImg.rows(), mImg.cols(), CvType.CV_8UC1);
Imgproc.cvtColor(mImg, mGray, Imgproc.COLOR_BGRA2GRAY);
Imgproc.GaussianBlur(mGray, mGray, new Size(9, 9), 2, 2);
Mat circleImage = new Mat(mGray.rows(), mGray.cols(), CvType.CV_8UC1);
Imgproc.HoughCircles(mGray, circleImage, Imgproc.CV_HOUGH_GRADIENT, 1d,
(double) mGray.height() / 70, 200d, 100d);

最佳答案

我不是 Java 程序员,但可以在您的代码中看到两个问题。首先,cvtColor() 中最后一个参数的值不应该是 4。改变这个

Imgproc.cvtColor(mImg , mGray, Imgproc.COLOR_BGRA2GRAY, 4);

对此

Imgproc.cvtColor(mImg , mGray, Imgproc.COLOR_BGRA2GRAY);

由于它正在从 BGRA 转换为灰度,它知道目标 (mGray) 是单 channel 。

其次,为什么要将 new Scalar(0) 传递给

Mat mGray = new Mat(mImg.rows(), mImg.cols(), CvType.CV_8UC1, new Scalar(0));

?那可能把事情搞砸了。我会调用为图像分配内存的构造函数:

Mat mGray = new Mat(mImg.rows(), mImg.cols(), CvType.CV_8UC1);

编辑:现在问题可能出在您读取图像和转换为 Mat 的方式上。我会替换这个

imgFile.getAbsolutePath()
mImg = Utils.bitmapToMat(imageBmp);

由此

Mat mImg = Highgui.imread(imgFile.getAbsolutePath());

然后确保 mImg.rows() 返回正确的值。请告诉我进展如何。

关于Android OpenCv HoughCircles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10467398/

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