java - Java 中的 OpenCV 用于图像过滤

标签 java opencv netbeans imagefilter

我有来自Tutorials Point 的java 代码。此代码用于 Robinson 过滤器。

package improctry2;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;


public class ImProcTry2 {
   public static void main( String[] args )
   {
   try {
      int kernelSize = 9;
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      Mat source = Highgui.imread("grayscale.jpg",
      Highgui.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);
      Highgui.imwrite("output.jpg", destination);
      } catch (Exception e) {
         System.out.println("Error: " + e.getMessage());
      }
   }
}     

This is 是我的图像输入,this输出(我无法发布图片,因为我是 stackoverflow 的新手)。 正如您所看到的,图像变成黑色并且什么也没有出现。我正在使用 Netbeans IDE 8.0,并且我已经将 OpenCV 库放入 Netbeans 中。我还运行了另一个 OpenCV Java 代码,它们运行得很好。我也在 E​​clipse 中运行此代码,但结果是相同的。 有人可以帮助我吗? 谢谢您

最佳答案

您创建一个 9x9 内核矩阵,但随后仅填充它的 3x3 子矩阵,而使其他元素保持初始化。要修复它,只需更改:

int kernelSize = 9;

至:

int kernelSize = 3;

您的代码实际上可以在最新的 Opencv(3.0 beta)中运行,但是那些统一的元素在旧版本中会破坏它(我检查了 2.4.10)。要打印矩阵的元素,请使用:

System.out.println(kernel.dump());

附注。
欢迎来到 stackoverflow。 :)

关于java - Java 中的 OpenCV 用于图像过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27393401/

相关文章:

java - Scene Builder 无法打开 FXML 文件

java - 需要包含 X.Y.Z 的封闭实例

java - Spring WS 在模式实例的命名空间声明方面存在问题

java - 错误 :Execution failed for task ':app:transformClassesWithDexForDebug' . >

java - 在java中沿鼠标方向发射射弹

java - 如何在 java swing 的选项卡式窗口内插入文本框或任何其他组件?

java - 从 CObArray 到 ArrayList

python - 如何在 Python OpenCV 中检测文本文档图像中不一致文本结构的段落

python - Python OpenCV 绑定(bind)中的 copyTo 是否等效?

python - 将 OpenCV 与 PyInstaller 结合使用