Erreur OpenCv dans C Wrapper pour imread: QNativeImage: impossible de joindre le segment de mémoire partagée

Voici mon code que je cours. J’utilise Ubuntu fidèle avec g ++ dans Emacs. Les erreurs se trouvent au bas de la page, mais je pourrais utiliser une aide pour les résoudre. Le programme fonctionne, il utilise les wrappers C pour imread et imshow au-dessus du principal dans le code. La photo apparaît, mais juste après l’ouverture de la fenêtre, j’obtiens une longue chaîne de code comme ci-dessous … Ce doit être mes wrappers, car C ++ imread et imshow fonctionnent parfaitement .. Les wrappers ont été écrits par un analyste de logiciels bien OpenCv donc je ne sais pas quel est le problème. Googling apporte des bugs VLC, Ubuntu et qt mais aucun pour OpenCV. Les wrappers sont conçus pour les autres langues et cv_imread ne fonctionne pas. C’est la raison pour laquelle j’ai décidé de déboguer en les exécutant. Puis j’ai découvert ça. J’ai reconstruit et réinstallé l’opencv comme l’une de mes étapes, mais j’ai reçu le même message. Toute aide est appréciée.

#include "opencv2/highgui/highgui.hpp" #include "opencv2/highgui/highgui_c.h" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgproc/imgproc_c.h" #include  using namespace cv; using namespace std; Mat* cv_imread(Ssortingng* filename, int flags) { return new Mat(imread(*filename, flags)); } void cv_imshow(Ssortingng* winname, Mat* mat) { cv::imshow(*winname, *mat); } int main( ) { const char* a = "/home/w/100_0229.JPG"; const char* c = "Ssortingng"; Mat* b = cv_imread(new Ssortingng (a), 1); cv_imshow(new Ssortingng (c), b); waitKey(0); //wait infinite time for a keypress destroyWindow("MyWindow"); //destroy the window with the name, "MyWindow" return 0; } 

Les erreurs:

  (b:19717): Gtk-WARNING **: Unable to locate theme engine in module_path: "clearlooks", init done opengl support available QNativeImage: Unable to attach to shared memory segment. X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x0 X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x0 X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x0 X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x0 X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x0 X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x0 X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x0 X Error: BadDrawable (invalid Pixmap or Window parameter) 9 Major opcode: 62 (X_CopyArea) Resource id: 0x0 1uuuuuuu Compilation finished at Mon Mar 24 02:46:13 

C ++ est sensible au capital, opencv utilise ssortingng en tant que paramètre, mais vous utilisez Ssortingng. Je pense que ssortingng et Ssortingng sont une chose différente. Reportez-vous au prototype de fonction ci-dessous:

 static void* imread_( const ssortingng& filename, int flags, int hdrtype, Mat* mat=0 ) Mat imread( const ssortingng& filename, int flags )