gpt4 book ai didi

Java opencv robinson mask,图像全黑

转载 作者:行者123 更新时间:2023-12-01 11:30:44 25 4
gpt4 key购买 nike

我正在玩开放式简历,我决定测试教程点的 example罗宾逊面具。我复制了代码并使用了灰度 jpg。

-不幸的是,输出的图像是全黑的。
-我尝试注释掉似乎是两个附加方向过滤器的内容。图像仍然是黑色的。
-我正在使用 java 1.8 和 opencv 3

try{
int kernelSize = 9;
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
Mat source = Imgcodecs.imread("grayScale2.jpg", Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat destination = new Mat(source.rows(),source.cols(),source.type());
Mat kernel = new Mat(kernelSize,kernelSize, CvType.CV_32F){
{
put(0,0,-1);
put(0,1,0);
put(0,2,1);

put(1,0-2);
put(1,1,0);
put(1,2,2);

put(2,0,-1);
put(2,1,0);
put(2,2,1);
}
};

Imgproc.filter2D(source, destination, -1, kernel);
Imgcodecs.imwrite("robinsonMaskExample.jpg", destination);

} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}

最佳答案

您链接我们的代码有点缺陷。它将内核大小定义为 9 x 9,但内核本身显然是 3 x 3。因此,它将内核系数放在内核的左上角,内核本身的其余部分为 0。这是可能是您没有看到正确结果的原因。 put方法在矩阵的行和列中放置一个数字。正如您在定义内核的代码中看到的,它将内容放入第 0,1,2 行和第 0,1,2 列中 - 这隐式是一个 3 x 3 内核,但内核的大小实际上是 9 x 9 .

因此,请取消注释您注释掉的那些行,因为正确定义整个边缘检测掩模非常重要。此外,该帖子在使用的边缘检测掩模方面是错误的。这实际上是使用 Sobel operator 。我以前从未听说过一个叫“罗宾逊”的面具,但我听说过一个Roberts-Cross mask,它是一个 2 x 2 内核,如下所示:

来源:Wikipedia

因此,最简单的修复方法是更改​​内核大小,使其变为 3....因此只需更改此:

int kernelSize = 9;

对此:

int kernelSize = 3;

更广阔的前景:

try{
int kernelSize = 3; // Change
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
Mat source = Imgcodecs.imread("grayScale2.jpg", Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat destination = new Mat(source.rows(),source.cols(),source.type());
Mat kernel = new Mat(kernelSize,kernelSize, CvType.CV_32F){
{
put(0,0,-1);
put(0,1,0);
put(0,2,1);

put(1,0-2);
put(1,1,0);
put(1,2,2);

put(2,0,-1);
put(2,1,0);
put(2,2,1); // Leave it this way - don't uncomment
}
};

Imgproc.filter2D(source, destination, -1, kernel);
Imgcodecs.imwrite("robinsonMaskExample.jpg", destination);

} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
<小时/>

这个故事的寓意。让这成为您在线查找教程的一个教训。不要相信所有这些,因为它们有时会给您错误的信息,例如您刚才遇到的内核大小错误以及调用边缘检测器错误的情况。我当然会使用它们作为一个很好的起点,但是当涉及到具体细节时,请始终调试您看到的已发布的代码,以确保他们打算编写的内容实际上是生成的。

关于Java opencv robinson mask,图像全黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417919/

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