Je porte une application OpenCV 2.2 à partir d'UNIX (qui fonctionne) sur Windows 7 64 bits et je reçois l'exception suivante lorsque cv :: imwrite s'appelle p>
"Erreur OpenCV: erreur non spécifiée (n'a pas pu trouver un écrivain pour l'extension spécifiée) dans une fonction inconnue, fichier highgui \ src \ loadsave.cpp" p>
L'application Unix d'origine fonctionne bien sur mes boîtes Mac et Linux. P>
Est-ce que quelqu'un sait quelle bibliothèque ou quelle configuration de compilateur-ci pourrait-elle être manquante qui rend ce travail sur Windows? P>
J'ai fait les choses suivantes pour obtenir OpenCV en cours d'exécution: p>
Le fait .BMP ou .PPM ne fonctionne pas que cela soulève plus de questions: p>
Merci encore une fois votre aimable assistance pour m'aider à déboguer ce problème. P>
3 Réponses :
Votre installation actuelle d'OpenCV ne prend pas en charge le format de fichier que vous essayez de créer sur disque.
Vérifiez si l'extension du fichier est correcte. Si c'est le cas, vous devrez recompiler OPENCV et ajouter une assistance à ce format et éventuellement installer les bibliothèques qui vous manquent. P>
C'est tout ce qui peut être dit sans plus d'informations. P>
EDIT: strong> P> Comme je n'ai pas également échoué à construire une application qui utilise l'interface C ++ d'OpenCV (V2.3 sur VS2005), j'ai fini par utiliser la solution de contournement suivante: Convertissez les types C ++ aux types C si nécessaire. p> à convertir de iplimage * code> à
cv :: mat code> est assez simple: p>
IplImage ipl_from_mat((IplImage)mat_img);
cvNamedWindow("window", CV_WINDOW_AUTOSIZE);
// and then pass the memory address of the variable when you need it as IplImage*
cvShowImage("window", &ipl_from_mat);
Merci@karlphillip - J'ai mis à jour la question à inclure plus de détails sur mon utilisation
Je ne peux même pas obtenir imread () code> pour charger un JPG sur WinXP avec OpenCV 2.3. MDR. Je dois résoudre celui-ci avant d'arriver à
imwrite () code>. Faites-nous savoir vos conclusions.
Quelles bibliothèques (libs / dlls) est votre application de référencement?
Juste le 2 qui sont nécessaires pour mon projet idizy imread / imwrite: opencv_highgui230.lib b> et openencv_core230.lib b>
Au fait, si j'utilise l'interface C au lieu du C ++, le code fonctionne.
@CVERTEX a mis à jour la réponse avec une solution de contournement temporaire pendant que nous ne pouvons pas obtenir cette chose pour fonctionner correctement. J'espère que ça vous aide.
de la API OpenCV 2.2 : P>
La fonction imwrite enregistre l'image dans le fichier spécifié. Le format d'image est choisi en fonction de l'extension du nom de fichier, voir Imread pour la liste des extensions.
Seulement 8 bits (ou 16 bits dans le cas de PNG, JPEG 2000 et TIFF) des images à canal ou à 3 canaux (avec 'BRG' Commande de canal) peut être enregistré à l'aide de cette fonction. strong> Si le format, la profondeur ou l'ordre de canal est différent, utilisez le tapis :: ConvertTo et CVTColor pour le convertir avant d'enregistrer ou utilisez les fonctions d'E / S universelles XML pour enregistrer l'image au format XML ou YAML. P> blockQuote> Vous avez peut-être plus de chance de convertir votre fichier en 8 ou 16 bits avant d'économiser. p>
Cependant, même avec des fichiers à canal à plusieurs canaux, j'ai eu des erreurs d'extension inconnues essayant d'enregistrer des fichiers JPG ou PNG, mais ont trouvé que BMP fonctionne. P>
essayez au lieu de p> ceci est un bug connu dans la version que vous utilisez. p> p>
+1 Il se passe également avec
imread () code> de OpenCV 2.3 sur vs 2005 sur ma boîte WinXP.
J'ai eu le même problème et j'utilisais des bibliothèques de libération de OpenCV lors de la création de débogage. J'ai changé les bibliothèques pour déboguer des bibliothèques et le problème résolu. Au cas où quelqu'un a fait le même genre d'erreur que moi.