java - 为什么图像的大小是0 x 0

标签 java opencv opencv3.0

尽管提供的路径中的图像存在于 HD 上,大小 = 120*80 当我使用 HighGUI.imread() 读取它时,返回的图像大小为 0 * 0

代码:

public class ROI {

static final String PATH_0 = [omitted]///A full path to an image actually existing on my machine

public static void main(String[] args) {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    Mat imgOriginal = Highgui.imread(PATH_0);// this image is 128*80
    showInFrame(imgOriginal);
    system.out.printlin(imgOriginal.size());// results 0 * 0

}

private static void showInFrame(Mat mat) {
    // TODO Auto-generated method stub
    JFrame mediaFrame = new JFrame("Media");
    mediaFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    /*JLabel mediaPanel = new JLabel();
    mediaFrame.setContentPane(mediaPanel);*/

    Highgui.imwrite("c:/private/img.jpg", mat);
    ImageIcon image = new ImageIcon("c:/private/img.jpg");
    JLabel label = new JLabel("label", image, JLabel.CENTER);

    mat.release();
    mediaFrame.setSize(300,300);
    mediaFrame.add(label);
    mediaFrame.setVisible(true);
    mediaFrame.validate();
}

最佳答案

这是因为您正在 Mat 对象上调用 .release() 。 来自文档:.release() 如果需要的话会释放矩阵。

所以我建议注释掉这个方法

关于java - 为什么图像的大小是0 x 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29279041/

相关文章:

java - 在 Java 中将数字存储为 ASCII 文本?

Java运行时编译

java - 可选与异常(exception), Controller 与服务

c++ - 在 visual studio 2005 中调试 openCV

python - 裁剪不需要的图像黑色空间

java - 如何在Jasper BLOB Image中显示?

opencv - 使用OpenCV获取拼图的单像素线轮廓

c++ - 为什么 cv::Mat 的 RAM 和硬盘大小总是有 4.5 倍的差异?

c++ - CvSVM 未在此范围内声明错误

c++ - OpenCV:如何混合多个不同颜色的半透明多边形?