尽管提供的路径中的图像存在于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()在需要时取消分配矩阵。

所以我建议将这种方法注释掉

10-02 23:23