Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测edeges android opencv_Android_Opencv_Android Ndk - Fatal编程技术网

如何检测edeges android opencv

如何检测edeges android opencv,android,opencv,android-ndk,Android,Opencv,Android Ndk,我正在使用android opencv 2.4.8进行图像处理。我累得到处找。但是没有得到有效的答案。我的图像名是pic1.jpg,它位于可绘制文件夹中。我创建Imageview以显示边。图像视图对象名称为img。我需要在Imageview中显示edeges。有人知道答案吗?所以你得到的图像是bmp,只需将其转换为opencv Mat Bitmap bmp; //input image Mat srcMat = new Mat ( bmp.getHeight(), bmp.getWidth(),

我正在使用android opencv 2.4.8进行图像处理。我累得到处找。但是没有得到有效的答案。我的图像名是pic1.jpg,它位于可绘制文件夹中。我创建Imageview以显示边。图像视图对象名称为img。我需要在Imageview中显示edeges。有人知道答案吗?

所以你得到的图像是bmp,只需将其转换为opencv Mat

Bitmap bmp; //input image
Mat srcMat = new Mat ( bmp.getHeight(), bmp.getWidth(), CvType.CV_8UC3);
Bitmap myBitmap32 = bmp.copy(Bitmap.Config.ARGB_8888, true);
Utils.bitmapToMat(myBitmap32, srcMat);
现在,在转换为灰色之前,对转换后的垫子执行canny边缘检测

Mat gray = new Mat(srcMat.size(), CvType.CV_8UC1);
Imgproc.cvtColor(srcMat, gray, Imgproc.COLOR_RGB2GRAY,4); 
执行canny并转换为4通道

Mat edge = new Mat();
Mat dst = new Mat();
Imgproc.Canny(gray, edge, 80, 90);
Imgproc.cvtColor(edge, dst, Imgproc.COLOR_GRAY2RGBA,4);
最后转换成位图

Bitmap resultBitmap = Bitmap.createBitmap(dst.cols(), dst.rows(),Bitmap.Config.ARGB_8888);           
Utils.matToBitmap(dst, resultBitmap);
现在在布局中显示图像

您还可以在opencv android sdk文件夹中参考图像处理


注:以上代码未经测试

这是对这个问题的一个非常彻底的回答。