2017-07-08 4 views
-1

SOLVED & POURQUOI:Java avec OpenCV n'a pas pu lire l'image PNG

chemin à l'image contient le caractère Unicode, je dois dire que c'est un bug.

ORIGINAL POST:

Je suis nouveau à OpenCV et juste utiliser Java avec OpenCV 3.2.0, 3.1.0 et 2.4.3 de lire cette image sans succès, à savoir, pas de largeur ou hauteur peut être lu, bien que mon but est de trouver les coins de harris, et d'utiliser une autre image est sans ce problème.

Code:

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() 

    ); 
    } 
} 

image:

enter image description here

erreur:

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

La sortie d'erreur ne semble pas correspondre au code de la question (il n'y a pas d'appel à 'imshow'). Le chemin dans l'échantillon semble contenir le latin de base - est-ce que cela reproduit vraiment le problème? | Si vous l'avez résolu, écrivez-le dans une réponse ou supprimez simplement la question. –

+0

@ DanMašek, j'oublie de dire, le chemin de fichier original ressemble à ceci: "E: /ℤIMAGEℂ/ℤtestℂ.png", avec de nombreux caractères Unicode, et je n'ai pas réalisé les caractères Unicode a entraîné l'erreur, alors je voulais demander ceci par un code plus simple et ont modifié le chemin vers "E: /IMAGE/test.png", mais conduisant à un effet trompeur de l'interrogation. Imshow est une pure fonction d'affichage d'image, j'ai oublié de supprimer cette information dans les textes de la console. J'espère avoir des nouvelles de votre résultat de ce code. –

+0

Si vous avez résolu le problème, alors répondez à la question vous-même (si vous pensez que cela peut aider quelqu'un d'autre) ou supprimez-le – leonbloy

Répondre

0

& POURQUOI SOLVED:

chemin à l'image contient le caractère Unicode .

Comme quelqu'un suggère si vous résolvez votre problème, supprimez-le ou répondez-y.

Si vous essayez de lire l'image à partir du chemin Unicode, des erreurs se produisent et je n'ai pas vu de solution associée, vous pouvez donc lire ceci.

OpenCV est malheureusement buggé avec le chemin du fichier Unicode. C'est le problème d'OpenCV mais le mien.