Java 使用 OpenCV 无法读取 PNG 图像
Java with OpenCV failed to read PNG image
已解决及原因:
图像路径包含 Unicode 字符,我不得不说这是一个错误。
原版POST:
我是 OpenCV 的新手,只是使用 java 与 OpenCV 3.2.0、3.1.0 和 2.4.3 读取此图像没有任何成功,即无法读取宽度或高度,虽然我的目标是找到哈里斯角,但使用其他图像没有这个问题。
代码:
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
public class Test
{
public static void main (String []args)
{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat img_object = Highgui.imread("E:/ℤIMAGEℂ/ℤtestℂ.png");
System.out.println(
"img_object.width() = " + img_object.width()
+ ",\n img_object.height() = " + img_object.height()
+ ",\n img_object.depth() = " + img_object.depth()
+ ",\n img_object.channels() = " + img_object.channels()
+ ",\n img_object.total() = " + img_object.total()
+ ",\n img_object.type() = " + img_object.type()
);
}
}
图片:
错误:
img_object.width() = 0,
img_object.height() = 0,
img_object.depth() = 0,
img_object.channels() = 1,
img_object.total() = 0,
img_object.type() = 0
libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data
OpenCV Error: Assertion failed (code) in cv::imencode, file ..\..\..\..\opencv\modules\highgui\src\loadsave.cpp, line 430
Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: ..\..\..\..\opencv\modules\highgui\src\loadsave.cpp:430: error: (-215) code in function cv::imencode
]
at org.opencv.highgui.Highgui.imencode_1(Native Method)
at org.opencv.highgui.Highgui.imencode(Highgui.java:243)
at Imshow.imshow(Imshow.java:29)
at test.main(Test.java:21)
已解决及原因:
图像路径包含 Unicode 字符。
正如有人建议的那样,如果您解决了问题,请将其删除或回答。
如果你尝试从Unicode路径读取图片,会出现错误,我没有看到相关的解决方案,所以你可以阅读这个。
遗憾的是,OpenCV 存在 Unicode 文件路径问题。这是 OpenCV 的问题,但我的问题。
已解决及原因:
图像路径包含 Unicode 字符,我不得不说这是一个错误。
原版POST:
我是 OpenCV 的新手,只是使用 java 与 OpenCV 3.2.0、3.1.0 和 2.4.3 读取此图像没有任何成功,即无法读取宽度或高度,虽然我的目标是找到哈里斯角,但使用其他图像没有这个问题。
代码:
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
public class Test
{
public static void main (String []args)
{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat img_object = Highgui.imread("E:/ℤIMAGEℂ/ℤtestℂ.png");
System.out.println(
"img_object.width() = " + img_object.width()
+ ",\n img_object.height() = " + img_object.height()
+ ",\n img_object.depth() = " + img_object.depth()
+ ",\n img_object.channels() = " + img_object.channels()
+ ",\n img_object.total() = " + img_object.total()
+ ",\n img_object.type() = " + img_object.type()
);
}
}
图片:
错误:
img_object.width() = 0,
img_object.height() = 0,
img_object.depth() = 0,
img_object.channels() = 1,
img_object.total() = 0,
img_object.type() = 0
libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data
OpenCV Error: Assertion failed (code) in cv::imencode, file ..\..\..\..\opencv\modules\highgui\src\loadsave.cpp, line 430
Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: ..\..\..\..\opencv\modules\highgui\src\loadsave.cpp:430: error: (-215) code in function cv::imencode
]
at org.opencv.highgui.Highgui.imencode_1(Native Method)
at org.opencv.highgui.Highgui.imencode(Highgui.java:243)
at Imshow.imshow(Imshow.java:29)
at test.main(Test.java:21)
已解决及原因:
图像路径包含 Unicode 字符。
正如有人建议的那样,如果您解决了问题,请将其删除或回答。
如果你尝试从Unicode路径读取图片,会出现错误,我没有看到相关的解决方案,所以你可以阅读这个。
遗憾的是,OpenCV 存在 Unicode 文件路径问题。这是 OpenCV 的问题,但我的问题。