尽管提供的路径中的图像存在于尺寸= 120 * 80的HD上 当我使用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();
}
答案 0 :(得分:1)
这是因为你在Mat对象上调用了.release()。 来自文档:.release()根据需要解除分配矩阵。
所以我建议将此方法评论出来