OpenCv 可实现的特效
灰度化方法二值化滤镜
边沿轮廓检测素描滤镜
怀旧色滤镜连环画
冰冻滤镜熔铸滤镜
浮雕滤镜
OpenCv for Android 步骤
去OpenCv 下载android 版SDK 导入Module
直接静态初始化
static {if(!OpenCVLoader.initDebug()) {Log.d("My App", "Unable to load OpenCV");} else {Log.d("My App", "OpenCV loaded");}
}
执行以上步骤后即可使用对应的api
************************ 该操作比较耗时,注意开启子线程进行对象获取 *********************************
详细代码如下: 具体运行效果自行复制粘贴
//灰度化方法
private Bitmap RGB2Gray(Bitmap photo) {Mat RGBMat = new Mat();Bitmap grayBitmap = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.RGB_565);Utils.bitmapToMat(photo, RGBMat);//convert original bitmap to Mat, R G B.Imgproc.cvtColor(RGBMat, RGBMat, Imgproc.COLOR_RGB2GRAY);//rgbMat to gray grayMatUtils.matToBitmap(RGBMat, grayBitmap);return grayBitmap;}//二值化滤镜
private Bitmap theshold(Bitmap photo){Mat mat = new Mat();Bitmap thes = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);Utils.bitmapToMat(photo, mat);Imgproc.cvtColor(mat,mat,Imgproc.COLOR_RGB2GRAY);Core.bitwise_not(mat,mat);Imgproc.threshold(mat,mat,100,255,Imgproc.THRESH_BINARY_INV);Utils.matToBitmap(mat,thes);return thes;}//轮廓 边沿轮廓检测private Bitmap Lunkuo(Bitmap photo){Mat mat = new Mat();Mat Cmat = new Mat();Mat Bmat = new Mat();Bitmap cartton = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);Utils.bitmapToMat(photo, mat);Imgproc.Canny(mat,Cmat,50,100);Core.bitwise_not(Cmat,Cmat);Utils.matToBitmap(Cmat, cartton);return cartton;}//素描滤镜Bitmap SuMiao(Bitmap photo){Mat SM = new Mat();Mat SM1 = new Mat();Bitmap sumiaoMap = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);Bitmap SMB = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);Bitmap SMB1 = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);Utils.bitmapToMat(photo, SM);//灰度化Imgproc.cvtColor(SM, SM, Imgproc.COLOR_RGB2GRAY);//颜色取反Core.bitwise_not(SM,SM1);//高斯模糊Imgproc.GaussianBlur(SM1,SM1,new Size(13,13),0,0);Utils.matToBitmap(SM, SMB);Utils.matToBitmap(SM1, SMB1);for(int i = 0;i 255 ? 255 : AR;AG = AG > 255 ? 255 : AG;AB = AB > 255 ? 255 : AB;huaijiu.setPixel(i,j,Color.rgb(AR,AG,AB));}}return huaijiu;}//连环画private Bitmap LianHuanHua(Bitmap photo){Bitmap lianhuanhua = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);for(int i = 0;i 255 ? 255 : AR;AG = AG > 255 ? 255 : AG;AB = AB > 255 ? 255 : AB;lianhuanhua.setPixel(i,j,Color.rgb(AR,AG,AB));}}return lianhuanhua;}//冰冻滤镜
private Bitmap BingDong(Bitmap photo){Bitmap bingdong = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);for(int i = 0;i 255 ? 255 : AR;AG = AG > 255 ? 255 : AG;AB = AB > 255 ? 255 : AB;bingdong.setPixel(i,j,Color.rgb(AR,AG,AB));}}return bingdong;}//熔铸滤镜
private Bitmap RongZhu(Bitmap photo){Bitmap rongzhu = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);for(int i = 0;i 255 ? 255 : AR;AG = AG > 255 ? 255 : AG;AB = AB > 255 ? 255 : AB;rongzhu.setPixel(i,j,Color.rgb(AR,AG,AB));}}return rongzhu;}//浮雕滤镜
private Bitmap FuDiao(Bitmap photo){Bitmap bingdong = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);for(int i = 1;i 255 ? 255 : AR;AG = AG > 255 ? 255 : AG;AB = AB > 255 ? 255 : AB;bingdong.setPixel(i,j,Color.rgb(AR,AG,AB));}}return bingdong;}
配置路径https://www.cnblogs.com/dingchao823/p/5392777.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
