gpt4 book ai didi

java - java中Mat>OpenCv中的put(int,int,int)方法

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:29 26 4
gpt4 key购买 nike

谢谢你的帮助我要去用java编写边缘检测代码,我从this获取prewitt边缘检测代码链接,当我将其粘贴到一个类时,程序运行完美。但是当我将此代码粘贴到其他程序中的一种方法时,就会发生错误。

错误说:Mat 类型中的 put(int, int, double[]) 方法不适用于参数 (int, int, int)我很困惑,为什么这段代码独立运行正确,但是当我将其粘贴到其他程序的一种方法时......

public BufferedImage edgePrewitt(File arg){
BufferedImage out1 = null;
try {

int kernelSize = 9;
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

Mat source = Imgcodecs.imread(arg.getAbsolutePath(), Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat destination = new Mat(source.rows(),source.cols(),source.type());

Mat kernel = new Mat(kernelSize,kernelSize, CvType.CV_8UC1);
int[][] data=new int[][]{{-1,0,1},{-1,0,1},{-1,0,1}};
for(int row=0;row<3;row++){
for(int col=0;col<3;col++){
kernel.put(row , col , data[row][col]);
System.out.println(data[row][col]);
}
}

Imgproc.filter2D(source, destination, -1, kernel);
Imgcodecs.imwrite("output.jpg", destination);
out1 = mat2Img(destination);
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
return out1;
}

最佳答案

方法put(类org.opencv.core.Mat)的签名是:

put(int, int, double[])

put(int, int, byte[])

put(int, int, int[])

put(int, int, Short[])

put(int, int, float[])

documentation

注意所有方法签名,第三个参数是一个数组。

尝试以下操作:

public BufferedImage edgePrewitt(File arg){
BufferedImage out1 = null;
try {

int kernelSize = 9;
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

Mat source = Imgcodecs.imread(arg.getAbsolutePath(), Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat destination = new Mat(source.rows(),source.cols(),source.type());

Mat kernel = new Mat(kernelSize,kernelSize, CvType.CV_8UC1);
int[][] data=new int[][]{{-1,0,1},{-1,0,1},{-1,0,1}};
for(int row=0;row<3;row++){
kernel.put(row , col , data[row]);
}

Imgproc.filter2D(source, destination, -1, kernel);
Imgcodecs.imwrite("output.jpg", destination);
out1 = mat2Img(destination);
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
return out1;
}

关于java - java中Mat>OpenCv中的put(int,int,int)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32797847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com