有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java OpenCV错误:OpenCV错误:断言失败(dims<=2&&step[0]>0)

我有这个opencv代码。 这使得我在一个页面中找到的一个图像变得复杂。 我想尝试一下,但它给出了以下错误,我对openCV不太了解。 我需要帮助

错误:OpenCV错误:cv::Mat::locateROI文件C:\build\master\u winpack-bindings-win64-vc14-static\OpenCV\modules\core\src\matrix中的断言失败(dims<;=2&;step[0]>;0)。cpp,第949行

public class main {

public static void main (String [ ] args) {

System.out.println ("hola");

 try {

     int kernelSize = 3;

     System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

     Mat source = Imgcodecs.imread("logo.png", 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,0);
           put(0,1,0);
           put(0,2,0);

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

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

     Imgproc.filter2D(source, destination, -1, kernel);

     Imgcodecs.imwrite("original.jpg", destination);

  } catch (Exception e) {

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

}


共 (4) 个答案

  1. # 1 楼答案

    我也有同样的错误,我在文件名中写了png而不是jpg。确保加载的图像具有正确的扩展名/名称

  2. # 2 楼答案

    我之前也有同样的错误,所以当我写图片的整个路径时,我的代码运行得很好,所以要小心图片的扩展,确保图片存在

    以下是我所做的:

    pic = cv2.imread('C:\Users\WSI\Desktop\python_scripts\hakuoki.jpg',cv2.IMREAD_COLOR)
    
  3. # 3 楼答案

    看起来您的源和目标是单通道,而内核是3个通道

  4. # 4 楼答案

    也犯了同样的错误,并且遵循了@Miki这个非常有价值的暗示。在我的例子中,由于位深度不合适,图像没有正确加载。32位,而不是灰度图像的8位