商城网站流程,建筑图纸怎么学看图,家教网站代理,以数字域名为网址的网站Java 调用 OpenCV 一.OpenCV 下载和安装二.创建 Java Maven 项目三.其他测试 一.OpenCV 下载和安装
Open CV 官网
可以下载编译好的包#xff0c;也可以下载源码自行编译 双击安装 opencv-4.8.0-windows.exe 默认为当前目录 安装即解压缩 根据系统位数选择 将 x64 目录下 op… Java 调用 OpenCV 一.OpenCV 下载和安装二.创建 Java Maven 项目三.其他测试 一.OpenCV 下载和安装
Open CV 官网
可以下载编译好的包也可以下载源码自行编译 双击安装 opencv-4.8.0-windows.exe 默认为当前目录 安装即解压缩 根据系统位数选择 将 x64 目录下 opencv_java480.dll 放到 JDK 目录 将 opencv-480.jar 引入项目依赖
二.创建 Java Maven 项目
工程截图 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdopencv/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source20/maven.compiler.sourcemaven.compiler.target20/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.opencv/groupIdartifactIdopencv/artifactIdversion4.8.0/versionscopesystem/scopesystemPath${project.basedir}/src/main/resources/lib/opencv-480.jar/systemPath/dependency/dependencies/project测试代码
package org.example;import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;/*** author Administrator*/
public class Main {/*** load opencv_java480*/static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}public static void main(String[] args) {String img C:\\Users\\Administrator\\Desktop\\IMG_20140207_165557.jpg;//read imageMat src Imgcodecs.imread(img);//define a dst matMat dst new Mat();// resizeImgproc.resize(src,dst,new Size(1600,900));//showHighGui.imshow(dst,dst);HighGui.resizeWindow(dst,1600,900);// show delay some ms auto closeHighGui.waitKey(1000);// exitSystem.exit(0);}
}显示效果 三.其他测试
package org.example;import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;/*** author Administrator*/
public class Main {/*** load opencv_java480*/static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}/*** 低通滤波器 均值滤波 使图像模糊、消除噪点*/static float[] vague_shaper new float[]{1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9};/*** 低通滤波器 高斯滤波 使图像模糊*/static float[] gauss_shaper new float[]{1/16,2/16,1/16,2/16,4/16,2/16,1/16,2/16,1/16};/*** 高通滤波器 锐化卷积核*/static float[] sharpening new float[]{-1,-1,-1,-1,8,-1,-1,-1,-1};/*** 一阶微算子 pre_witt 处理噪声多、灰度突变的图像*/static float[] pre_witt new float[]{-1,-1,-1,0,0,0,1,1,1};/*** 一阶微算子 sobel pre_witt 的改进版*/static float[] sobel_vertical new float[]{-1,0,1,-2,0,2,-1,0,1};/*** 一阶微算子 sobel pre_witt 的改进版*/static float[] sobel_horizontal new float[]{1,2,1,0,0,0,-1,-2,-1};public static void main(String[] args) {String imgF C:\\Users\\Administrator\\Desktop\\IMG_20220204_132906.jpg;Mat img Imgcodecs.imread(imgF);Mat src new Mat();Mat dst new Mat();//重置大小Imgproc.resize(img,src,new Size(1600,900));int rows src.rows();int cols src.cols();int channels src.channels();//展示HighGui.resizeWindow(dst,1600,900);HighGui.imshow(dst,src);HighGui.waitKey(0);//灰度化Imgproc.cvtColor(src,dst,Imgproc.COLOR_RGB2GRAY);HighGui.imshow(dst,dst);HighGui.waitKey(0);//定义卷积核Mat operator new Mat(3,3, CvType.CV_32FC1);//模糊operator.put(0,0,vague_shaper);Imgproc.filter2D(src,dst,-1,operator);HighGui.imshow(vague_shaper,dst);HighGui.waitKey(0);//模糊operator.put(0,0,gauss_shaper);Imgproc.filter2D(src,dst,-1,operator);HighGui.imshow(gauss_shaper,dst);HighGui.waitKey(0);//高通operator.put(0,0,sharpening);Imgproc.filter2D(src,dst,-1,operator);HighGui.imshow(sharpening,dst);HighGui.waitKey(0);//pre_wittoperator.put(0,0,pre_witt);Imgproc.filter2D(src,dst,-1,operator);HighGui.imshow(pre_witt,dst);HighGui.waitKey(0);//sobel_verticaloperator.put(0,0,sobel_vertical);Imgproc.filter2D(src,dst,-1,operator);HighGui.imshow(sobel_vertical,dst);HighGui.waitKey(0);//sobel_horizontaloperator.put(0,0,sobel_horizontal);Imgproc.filter2D(src,dst,-1,operator);HighGui.imshow(sobel_horizontal,dst);HighGui.waitKey(0);//二值化Mat gray new Mat();Imgproc.cvtColor(src,gray,Imgproc.COLOR_RGB2GRAY);Imgproc.threshold(gray,dst,100,255,Imgproc.THRESH_BINARY);HighGui.imshow(binary,dst);HighGui.waitKey(0);//边缘检测Imgproc.Canny(src,dst,128,255);HighGui.imshow(edge,dst);HighGui.waitKey(0);//反色dst src.clone();byte[] data new byte[rows * cols * channels];dst.get(0,0,data);int index,r,g,b;for (int rs 0 ; rs rows ; rs){//通道值横向排列for (int c 0 ; c cols * channels ; c c channels){//取位置index rs * cols * channels c;//取RGB并翻转b 255 - data[index] 0xff;g 255 - data[index 1] 0xff;r 255 - data[index 2] 0xff;//回写data[index] (byte) b;data[index 1] (byte) g;data[index 2] (byte) r;}}dst.put(0,0,data);HighGui.imshow(overturn,dst);HighGui.waitKey(0);System.exit(0);}}原图 灰度图 锐化图 Prewitt 算子 sobel_vertical sobel_horizontal binary 边缘检测 反色