如何检测edeges android opencv

Pra*_*han -1 android opencv android-ndk

我正在使用android opencv 2.4.8进行图像处理.我厌倦了到处搜寻.但没有得到有效的答案.我的图片名称是pic1.jpg,它位于drawable文件夹中.我创建了Imageview来显示边缘.图像视图对象名称为img.我需要在Imageview中显示edeges.任何人都可以知道答案吗?

Har*_*ris 5

所以你的图像是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);
Run Code Online (Sandbox Code Playgroud)

现在在转换后的Mat上执行canny边缘检测,然后转换为灰色,

Mat gray = new Mat(srcMat.size(), CvType.CV_8UC1);
Imgproc.cvtColor(srcMat, gray, Imgproc.COLOR_RGB2GRAY,4); 
Run Code Online (Sandbox Code Playgroud)

执行canny并转换为4通道

Mat edge = new Mat();
Mat dst = new Mat();
Imgproc.Canny(gray, edge, 80, 90);
Imgproc.cvtColor(edge, dst, Imgproc.COLOR_GRAY2RGBA,4);
Run Code Online (Sandbox Code Playgroud)

最后转换为位图

Bitmap resultBitmap = Bitmap.createBitmap(dst.cols(), dst.rows(),Bitmap.Config.ARGB_8888);           
Utils.matToBitmap(dst, resultBitmap);
Run Code Online (Sandbox Code Playgroud)

现在以布局显示图像.

您也可以在opencv-android-sdk文件夹中引用图像处理.

注意:以上代码未经过测试.