0
我开发一个应用程序,将取得在使用该装置的相机图像的胡时刻。在达到HU矩计算之前的图像是:灰度,gausseanBlurr,二值化,Canny算法,应用方法findcontour(),最后计算HU矩。所有这些都是在Android Studio上使用OpenCV完成的。OpenCV的Hu矩的Android
public void Hu()
{
Mat imagenOriginal;
imagenOriginal = new Mat();
Mat binario;
binario = new Mat();
Mat Canny;
Canny = new Mat();
Utils.bitmapToMat(bitmap, imagenOriginal);
Mat gris= new Mat(imagenOriginal.width() ,imagenOriginal.height(),imagenOriginal.type());
Imgproc.cvtColor(imagenOriginal, gris, Imgproc.COLOR_RGB2GRAY);
org.opencv.core.Size s = new Size(3,3);
Imgproc.GaussianBlur(gris, gris, s, 2);
Imgproc.threshold(gris, binario, 100, 255, Imgproc.THRESH_BINARY);
Imgproc.Canny(gris, Canny, 50, 50 * 3);
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Mat hierarcy = new Mat();
Imgproc.findContours(Canny, contours, hierarcy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
Imgproc.drawContours(Canny, contours, -1, new Scalar(Math.random() * 255, Math.random() * 255, Math.random() * 255));
Moments momento = new Moments();
Mat hu= new Mat();
momento = Imgproc.moments(contours.get(0), false); // ERROR LINE
Imgproc.HuMoments(momento, hu);
}
当我执行计算Hu矩是当我有错误,因为我做了一个试验,每次q一些算法应用到该图像。如何让胡时刻 的代码从这里取:
Android: using hu moments opencv function to get the feature value
我也明白,胡时刻保存在胡变量,但我看不出有什么方法来打印所有值。
谢谢!
您好,非常感谢你和你清晰的时刻。但是我对你的代码有疑问。 Hu矩的手工计算你的内心做FOR循环或出来的吗? 如果外面做的,什么是“P”的价值? “P = nu.get(i)”将使用“我”的最后一个值? 如果它里面,我们将有八个瞬间为“女娲”列表中的每个“我”的时刻,我们终于有多少huMoments为每个图像?我需要为每个图像分别放置8个huMoments,而不是每个轮廓,不是? – Nimo
,现在我在循环FOR“Improc.moments(contour.get(i),false)”的行中有错误。它说“java.lang.UnsatisfiedLinkError:未找到本地方法:org.opencv.imgproc.Imgproc.moments_0:(JZ)[D”。你知道如何解决它?我在互联网上什么也没得到。谢谢! @Luis – Nimo
我想你最好用最大轮廓,然后得到胡时刻 – Luis