Salut je pense qu'il y a méprise.
Car le problème de opencv par le package manager est que si tu compile opencv a la main et bien le build détecte ta version de GTK (2 ou 3) sous Linux et je pense qu'il en a besoin je ne sais pourquoi.
Et comme par le package manager opencv est précompiler avec GTK+2 dans ma distro.
Tu ne peut pas te servir de opencv en conjonction avec GTK+3: il y a une collision de symbole (on ne peu pas mixer du GTK+2 et du GTK+3, ça ne marche pas).
Essaie ce bout de code GTK+3 pour voir si chez toi ça fonctionne:
#include <string>#include <vector>#include <cstdlib>usingnamespacestd;#include <gtk/gtk.h>#include <opencv2/highgui.hpp> // Headers to correct for opencv-2.4#include <opencv2/imgproc.hpp> // Headers to correct for opencv-2.4voiddestroy(GtkWidget*widget,gpointerpointer);staticgbooleandelete_event(GtkWidget*widget,GdkEvent*event,gpointerpointer);gbooleanquit(gpointeruser_data);stringreturn_msg;/** To compile with:* * $ g++ main.cpp `pkg-config --cflags --libs gtk+-3.0` `pkg-config --cflags --libs opencv`* * Display an image given as argument. */intmain(intargc,char*argv[]){if(argc<2){fprintf(stdout,"usage: %s image_filepath",argv[0]);exit(EXIT_FAILURE);}try{return_msg="Genius It works !!!";cv::Matimage=cv::imread(argv[1]);cv::Matframe;// This can fail by some bads images files this why the exception handle.cv::resize(image,frame,cv::Size(image.cols,image.rows));}catch(cv::Exception&e){return_msg="Sorry It doesn't work !\n\n";return_msg+=e.err;}gtk_init(&argc,&argv);GtkWidget*window,*label,*image,*vbox;window=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_icon_from_file(GTK_WINDOW(window),argv[1],NULL);gtk_window_set_title(GTK_WINDOW(window),"Test program");gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS);gtk_window_set_resizable(GTK_WINDOW(window),FALSE);gtk_widget_set_size_request(window,-1,-1);label=gtk_label_new(return_msg.c_str());image=gtk_image_new_from_file(argv[1]);vbox=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),image,TRUE,TRUE,0);gtk_window_set_title(GTK_WINDOW(window),"Test program");gtk_widget_set_size_request(window,-1,-1);gtk_container_set_border_width(GTK_CONTAINER(window),16);gtk_container_add(GTK_CONTAINER(window),vbox);g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL);g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(delete_event),NULL);gtk_widget_show_all(window);inttimeout_ms=5000;g_timeout_add(timeout_ms,&quit,NULL);gtk_main();exit(EXIT_SUCCESS);}gbooleanquit(gpointeruser_data){destroy(NULL,NULL);returnFALSE;}voiddestroy(GtkWidget*widget,gpointerpointer){fprintf(stdout,"Test program result:\n%s\n",return_msg.c_str());gtk_main_quit();return;}staticgbooleandelete_event(GtkWidget*widget,GdkEvent*event,gpointerpointer){if(event->type==GDK_DELETE){fprintf(stdout,"%s delete_event catch\n",__func__);returnFALSE;}else{fprintf(stdout,"%s delete_event not catch\n",__func__);returnTRUE;}}
[^] # Re: OpenCV ?
Posté par Linuxator . En réponse au message un micro lecteur audio Linux GTK+3.0 écrit en C++.. Évalué à 1. Dernière modification le 09 décembre 2015 à 09:39.
Salut je pense qu'il y a méprise.
Car le problème de opencv par le package manager est que si tu compile opencv a la main et bien le build détecte ta version de GTK (2 ou 3) sous Linux et je pense qu'il en a besoin je ne sais pourquoi.
Et comme par le package manager opencv est précompiler avec GTK+2 dans ma distro.
Tu ne peut pas te servir de opencv en conjonction avec GTK+3: il y a une collision de symbole (on ne peu pas mixer du GTK+2 et du GTK+3, ça ne marche pas).
Essaie ce bout de code GTK+3 pour voir si chez toi ça fonctionne:
Sinon merci pour le conseil de libvlc.