Java OpenCV中怎么自定义图像滤波算子
今天小编给大家分享一下JavaOpenCV中怎么自定义图像滤波算子的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
示例代码packagecom.xu.image;importjava.io.File;importorg.opencv.core.Core;importorg.opencv.core.Mat;importorg.opencv.core.Point;importorg.opencv.highgui.HighGui;importorg.opencv.imgcodecs.Imgcodecs;importorg.opencv.imgproc.Imgproc;/***@Title:Image.java*@Description:OpenCV测试文件*@Packagecom.xu.test*@author:hyacinth*@date:2019年5月7日12:13:13*@version:V-1.0.0*@Copyright:2019hyacinth*/publicclassImage{static{Stringos=System.getProperty("os.name");Stringtype=System.getProperty("sun.arch.data.model");if(os.toUpperCase().contains("WINDOWS")){Filelib;if(type.endsWith("64")){lib=newFile("D:\\Learn\\OpenCV\\OpenCV-4.5.5\\build\\java\\x64\\"+System.mapLibraryName("opencv_java455"));}else{lib=newFile("D:\\Learn\\OpenCV\\OpenCV-4.5.5\\build\\java\\x86\\"+System.mapLibraryName("opencv_java455"));}System.load(lib.getAbsolutePath());}}publicstaticvoidmain(String[]args){kernel3();}/***OpenCV-4.0.0自定义滤波(降噪)(Robert算子)**@return:void*@date:2019年5月7日12:16:55*/publicstaticvoidkernel1(){Matsrc=Imgcodecs.imread("D:\\OneDrive\\桌面\\1.jpg");HighGui.imshow("Robert算子原图",src.clone());Matdst_x=newMat();Matdst_y=newMat();//Robert算子-X轴Matkernel_x=newMat(2,2,1);kernel_x.put(0,0,1);kernel_x.put(0,1,0);kernel_x.put(1,0,0);kernel_x.put(1,1,-1);Imgproc.filter2D(src,dst_x,-1,kernel_x,newPoint(-1,-1),0.0);//Robert算子-Y轴Matkernel_y=newMat(2,2,1);kernel_y.put(0,0,0);kernel_y.put(0,1,1);kernel_y.put(1,0,-1);kernel_y.put(1,1,0);Imgproc.filter2D(src,dst_y,-1,kernel_y,newPoint(-1,-1),0.0);HighGui.imshow("Robert算子Y",dst_y);HighGui.imshow("Robert算子X",dst_x);Matdst=newMat();Core.addWeighted(dst_x,0.5,dst_y,0.5,0,dst);HighGui.imshow("Robert算子融合",dst);HighGui.waitKey(10);}/***OpenCV-4.0.0自定义滤波(降噪)(Sable算子)**@return:void*@date:2019年5月7日12:16:55*/publicstaticvoidkernel2(){Matsrc=Imgcodecs.imread("D:\\OneDrive\\桌面\\1.jpg");HighGui.imshow("Sable算子原图",src.clone());Matdst_x=newMat();Matdst_y=newMat();//Soble算子-X轴Matkernel_x=newMat(3,3,1);kernel_x.put(0,0,-1);kernel_x.put(0,1,0);kernel_x.put(0,2,1);kernel_x.put(1,0,-2);kernel_x.put(1,1,0);kernel_x.put(1,2,2);kernel_x.put(2,0,-1);kernel_x.put(2,1,0);kernel_x.put(2,2,1);Imgproc.filter2D(src,dst_x,-1,kernel_x,newPoint(-1,-1),0.0);//Soble算子-Y轴Matkernel_y=newMat(3,3,1);kernel_y.put(0,0,-1);kernel_y.put(0,1,2);kernel_y.put(0,2,-1);kernel_y.put(1,0,0);kernel_y.put(1,1,0);kernel_y.put(1,2,0);kernel_y.put(2,0,1);kernel_y.put(2,1,2);kernel_y.put(2,2,1);Imgproc.filter2D(src,dst_y,-1,kernel_y,newPoint(-1,-1),0.0);HighGui.imshow("Sable算子X",dst_x);HighGui.imshow("Sable算子Y",dst_y);Matdst=newMat();Core.addWeighted(dst_x,0.5,dst_y,0.5,0,dst);HighGui.imshow("Sable算子融合",dst);HighGui.waitKey(1);}/***OpenCV-4.0.0自定义滤波(降噪)(Laplace算子)**@return:void*@date:2019年5月7日12:16:55*/publicstaticvoidkernel3(){Matsrc=Imgcodecs.imread("D:\\OneDrive\\桌面\\1.jpg");HighGui.imshow("Laplace算子原图",src.clone());Matdst=newMat();//拉普拉斯算子Matkernel=newMat(3,3,1);kernel.put(0,0,0);kernel.put(0,1,-1);kernel.put(0,2,0);kernel.put(1,0,-1);kernel.put(1,1,4);kernel.put(1,2,-1);kernel.put(2,0,0);kernel.put(2,1,-1);kernel.put(2,2,0);Imgproc.filter2D(src,dst,-1,kernel,newPoint(-1,-1),0.0);HighGui.imshow("Laplace算子",dst);HighGui.waitKey(0);}}效果图
以上就是“JavaOpenCV中怎么自定义图像滤波算子”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。