暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Android App开发超实用实例 | OpenCV在Android手机以圆形形状抠取图像

362

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,它可以运行在Linux、Windows、Android和Mac OS等操作系统上。OpenCV原本由一系列 C 函数和少量 C++ 类构成,同时提供了Python等其他语言的接口,它实现了图像处理和计算机视觉方面的很多通用算法。下面这个实例演示了使用OpenCV在Android手机以圆形形状抠取图像。


01

实例功能


此实例主要通过使用Imgproc的circle()方法等,实现抠取圆形图像。当实例运行之后,单击“显示原始图像”按钮,原始图像的效果如图1(a)所示。单击“抠取圆形图像”按钮,抠取的圆形图像效果如图1(b)所示。


■ 图1


02

实现代码



public void onClickButton2(View v) { //响应单击按钮“抠取圆形图像”
  //初始化myMat,用于保存原始图像
  Mat myMat=new Mat();
  Utils.bitmapToMat(myBitmap,myMat);
  //初始化myMaskMat,用于创建遮罩层
  Mat myMaskMat=new Mat(myMat.size(), CvType.CV_8U,new Scalar(0));
  //设置半径和圆心坐标
  int myRadius=300;
  Point myPoint=new Point(720,660);
  //在遮罩层上绘制实心圆
  Imgproc.circle(myMaskMat,myPoint,myRadius,new Scalar(255),-1);
  //初始化myMaskedMat,用于保存抠取的圆形图像
  Mat myMaskedMat=new Mat();
  //根据myMaskMat在myMat上抠取圆形图像,然后保存在myMaskedMat上
  myMat.copyTo(myMaskedMat,myMaskMat);
  //创建空Bitmap,用于保存抠取的圆形图像
  Bitmap myNewBitmap=Bitmap.createBitmap(myMaskedMat.width(),
          myMaskedMat.height(),Bitmap.Config.ARGB_8888);
  //将抠取的圆形图像输出至myNewBitmap
  Utils.matToBitmap(myMaskedMat,myNewBitmap);
  //通过ImageView控件显示抠取的圆形图像
  myImageView.setImageBitmap(myNewBitmap);
 }
}


03

代码说明


上面这段代码在MyCode\MySampleK96\app\src\main\java\com\bin\luo\mysample\ MainActivity.java文件中。在这段代码中,Imgproc的circle()方法用于在图像上绘制圆形,该方法的语法声明如下:

static void circle(Mat img, Point center, 
                      int radius, Scalar color, int thickness)


其中,参数Mat img表示图像;参数Point center表示圆心坐标;参数int radius表示半径;参数Scalar color表示线条颜色;参数int thickness表示线条宽度,如果该参数值为负数,表示使用线条颜色(Scalar color)填充圆形内部。

此实例的完整代码在MyCode\MySampleK96文件夹中。


04

补充说明


在测试代码时,必须保持网络畅通。


05

源代码下载

关注微信公众号,后台回复关键词 “Android App开发超实用代码074” 即可获得完整源代码。



06

参考书籍


扫码优惠购书


《Android App开发超实用代码集锦——jQuery Mobile+OpenCV+O》

ISBN:9787302589358

作者:罗帅、罗斌

定价:99元



问题描述+解决方案+真实源码+效果截图

介绍jQuery Mobile、OpenCV、OpenGL等在Android平台运行的应用

300个实例,提供完整源代码,边看边做边学



文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论