2017-07-08 159 views
-1

解决&为什么的Java与OpenCV的无法读取PNG图像

路径图像包含Unicode字符,我不得不说这是一个错误。

原帖

我是新来的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() 

    ); 
    } 
} 

图片

enter image description here

错误

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) 
+0

错误输出似乎不符合问题中的代码(没有调用'imshow')。示例中的路径似乎包含基本拉丁语 - 是否真的能重现问题? |如果您解决了问题,请将其写入答案中,或者删除问题。 –

+0

@DanMašek,我忘了说,原始文件路径如下所示:“E:/ℤIMAGEℂ/ℤtestℂ.png”,带有许多Unicode字符,并且我没有意识到Unicode字符导致了错误,所以我想问一下这通过一个简单的代码,并修改了路径为“E:/IMAGE/test.png”,但导致了质疑的误导效应。 imshow是一个纯粹的图像显示功能,我忘了删除控制台文本中的信息。我希望听到你的这段代码的结果。 –

+0

如果你解决了这个问题,那么要么自己回答问题(如果你认为它可以帮助别人)或删除它 – leonbloy

回答

0

解决&为什么

路径图像包含Unicode字符

有人建议如果你解决你的问题,删除它或回答它。

如果您尝试从Unicode路径读取图像,则会发生错误,并且我没有看到相关的解决方案,因此您可以阅读此内容。

不幸的是,OpenCV被Unicode文件路径窃听。这是OpenCV的问题,但我的。