View Full Version : Visual Studio + OpenCV , come impostare il tutto fase iniziale.
Qualcuno può spiegarmi, cortesemente, come fare per impostare OpenCV su Visual Studio ?
Ho provato-riprovato seguendo varie guide sul web, ma senza esito positivo (ho provato sia con Visual Studio 2010 sia con Visual Studio 2013 , e rispettivamente con OpenCV 2.1.0 - 2.4.7 - 2.4.10 - 2.4.11 - 3.0 ecc!:confused: :muro: )
Qualche guida che ho eseguito senza esito positivo:
LINK GUIDA1 (https://www.youtube.com/watch?v=e_TQ9c3n_d8)
LINK GUIDA2 (http://www.vmlab.it/project/blog/6-tutorials/26-utilizzare-opencv-con-visual-studio-2010)
LINK GUIDA3 (https://hypeztechblog.wordpress.com/2012/10/01/configurare-visual-studio-2010-per-opencv/)
L'esito positivo lo deduco dal fatto che faccio partire (tramite tasto DEBUG F5) un esempio "test" di questo tipo:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
// Leggi l’immagine
cv::Mat image = cv::imread(“nomefileimmaginedavisualizzare.jpg”);
// Crea una finestra per visualizzare l’immagine
cv::namedWindow(“La mia immagine”);
// Visualizza l’immagine nella finestra
cv::imshow(“La mia immagine”, image);
// Aspetta 5 secondi
cv::waitKey(5000);
// Ritorna 0 e quindi concludi il main
return 0;
}
e crasha va in errore e vari warning.:muro:
S.O. = Win 8.1 64BIT
Grazie!;)
P.S. sono un neofita con i suddetti programmi e mi piacerebbe cominciare, ma se solo riuscissi ad impostare tutto a dovere, quindi abbiate pazienza se forse chiedo cose ovvie per voi veterani del campo!:rolleyes:
tomminno
30-06-2015, 21:47
Se va in crash durante il debug per lo meno sei riuscito a compilare correttamente ;)
Ma visto che vai in debug esattamente che errore ti dà?
Non è che non hai le dll di OpenCV nel path del tuo eseguibile?
Una delle guide che hai postato mostra l'opzione di non aggiungere OpenCV nel path di sistema quindi devi copiare a mano le dll nella stessa cartella del tuo eseguibile.
Altri problemi potrebbero essere le opzioni di compilazione differenti tra il tuo eseguibile e le librerie OpenCV.
Ma se sei neofita partire proprio da una libreria complessa come OpenCV che senso ha? Se non hai le basi di C/C++ forse è il caso di partire con qualcosa di più semplice no?
Se va in crash durante il debug per lo meno sei riuscito a compilare correttamente ;)
Ma visto che vai in debug esattamente che errore ti dà?
Non è che non hai le dll di OpenCV nel path del tuo eseguibile?
Una delle guide che hai postato mostra l'opzione di non aggiungere OpenCV nel path di sistema quindi devi copiare a mano le dll nella stessa cartella del tuo eseguibile.
Altri problemi potrebbero essere le opzioni di compilazione differenti tra il tuo eseguibile e le librerie OpenCV.
Ma se sei neofita partire proprio da una libreria complessa come OpenCV che senso ha? Se non hai le basi di C/C++ forse è il caso di partire con qualcosa di più semplice no?
Innanzitutto grazie mille per la risposta!;)
Vengo subito al dunque....
ho necessità di realizzare un esempio di questo tipo (progetto finale):
https://www.youtube.com/watch?v=bSeFrPrqZ2A
...ora per quanto ci ho capito, devo necessariamente impostare OpenCV in modo tale che riesca a dialogare e condividere le proprie "librerie" con Visual Studio.
Il punto è proprio ciò, non tanto il progetto finale...ma come fare in modo che OpenCV dialoghi in maniera corretta con Visual Studio.
Per verificare se ho impostato tutto correttamente mi sono basato sul codice postato nel primo post di apertura di un'immagine jpg , ma non aprendosi e dando vari errori\warning ho capito che c'è qualcosa che non và e non sono riuscito ad andare avanti.:muro:
Prima domanda, te hai Visual Studio ed OpenCV installati sul tuo PC ? Se sì, quale versione di entrambi?:confused:
Quale versione di Visual Studio ed OpenCV devo procurarmi per far sì che comincio almeno con una base che qualcuno di voi ha già testato per certo...:rolleyes:
Grazie!;)
Ho appena rieseguito ALLA LETTERA, quanto appena fatto in questo video tutorial:
LINK VIDEO (https://www.youtube.com/watch?v=cgo0UitHfp8)
Al momento del click su "Local Windows Debugger" , compare tale errore:
"Error 1 error C4996: 'cv::flann::Index_<T>': was declared deprecated c:\opencv231\build\include\opencv2\flann\flann.hpp 233 1 myNewOpenCV
"
Output:
"
1>------ Build started: Project: myNewOpenCV, Configuration: Debug Win32 ------
1> main.cpp
1>c:\opencv231\build\include\opencv2\flann\flann.hpp(233): error C4996: 'cv::flann::Index_<T>': was declared deprecated
1> c:\opencv231\build\include\opencv2\flann\flann.hpp(278) : see reference to class template instantiation 'cv::flann::Index_<T>' being compiled
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
"
Differenze dal videotutorial:
Io posseggo Visual Studio 2013 (invece videotutorial VS2010, se necessario ho iso pronta ad essere installata!)
Io posseggo OpenCV 2.3.1 (invece videotutorial 2.4.3 non si trova più in rete!)
..le librerie le ho modificate rispettivamente con dicitura 231...;)
Qualche suggerimento?:confused: :rolleyes:
Grazie!!!;)
tomminno
01-07-2015, 11:12
Non puoi dire di aver seguito alla lettera un tutorial su VS2010 se stai usando un IDE differente ;)
Se usi VS2013 scarica almeno la versione 2.4
Non puoi dire di aver seguito alla lettera un tutorial su VS2010 se stai usando un IDE differente ;)
Se usi VS2013 scarica almeno la versione 2.4
Lo scegliere la versione 2.3.1 è stato dettato dal fatto che il percorso all'interno della cartella opencv è strutturato come nel video, e non come dalle ultime versioni in poi disponibili sul sito ufficiale (2.4.9) con all'interno della cartella opencv , le 2 cartelle rispettivamente build e sources.:rolleyes:
Ripeto, te hai OpenCV? Hai Visualstudio?;)
tomminno
01-07-2015, 14:54
Lo scegliere la versione 2.3.1 è stato dettato dal fatto che il percorso all'interno della cartella opencv è strutturato come nel video, e non come dalle ultime versioni in poi disponibili sul sito ufficiale (2.4.9) con all'interno della cartella opencv , le 2 cartelle rispettivamente build e sources.:rolleyes:
Ripeto, te hai OpenCV? Hai Visualstudio?;)
Si 2.4.11 e VS2013.
Se vuoi usare una versione precedente alla 2.4 ti devi armare di VS2010, ma sinceramente non capisco perchè, cambierebbe solo il path da configurare come cartella di include su VS, non mi sembra tutto questo granchè.
E un consiglio se non riesci a configurare queste cose banali, come i path delle cartelle da includere, forse è il caso che parti con progetti più semplici.
Si 2.4.11 e VS2013.
Se vuoi usare una versione precedente alla 2.4 ti devi armare di VS2010, ma sinceramente non capisco perchè, cambierebbe solo il path da configurare come cartella di include su VS, non mi sembra tutto questo granchè.
E un consiglio se non riesci a configurare queste cose banali, come i path delle cartelle da includere, forse è il caso che parti con progetti più semplici.
Eccomi ad aggiornarti\vi.
Ho installato la versione OpenCV 2.4.11 come da tuo consiglio.
Ho provveduto a seguire alla lettera (stavolta nel vero senso della parola), questa guida VIDEO (https://www.youtube.com/watch?v=HN47AljUjq4).
Ho provato ad eseguire un codice "test" di apertura immagine (allocata nella cartella "C", denominata "foto1.jpg") , lo posto qui in basso:
"
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
string filename = "C:\foto1.jpg";
Mat image;
image = imread(filename, CV_LOAD_IMAGE_COLOR);
if (!image.data)
{
cout << "Could not open or find the image" << std::endl;
return -1;
}
namedWindow("Display window", WINDOW_AUTOSIZE);
imshow("Display window", image);
waitKey(0);
return 0;
}
"
...ma purtroppo ha rilasciato i seguenti errori:
"
'OpenCV.exe' (Win32): Loaded 'C:\Users\Nomeutente\Documents\Visual Studio 2013\Projects\OpenCV\x64\Debug\OpenCV.exe'. Symbols loaded.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Opencv\build\x64\vc12\bin\opencv_core2411d.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Opencv\build\x64\vc12\bin\opencv_highgui2411d.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msvcp120d.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msvcr120d.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\ole32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\oleaut32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msvfw32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\avifil32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\avicap32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\combase.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\winmm.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\shell32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.9600.17810_none_34ae2abd958aedeb\comctl32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msacm32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\version.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\winmmbase.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\shlwapi.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\cfgmgr32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\devobj.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\imm32.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\msctf.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\nvinitx.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Program Files\NVIDIA Corporation\coprocmanager\detoured.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Program Files\NVIDIA Corporation\coprocmanager\nvd3d9wrapx.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Windows\System32\setupapi.dll'. Cannot find or open the PDB file.
'OpenCV.exe' (Win32): Loaded 'C:\Program Files\NVIDIA Corporation\coprocmanager\nvdxgiwrapx.dll'. Cannot find or open the PDB file.
The program '[7176] OpenCV.exe' has exited with code -1 (0xffffffff).
"
Non mi arrendo e provo a "copiare-incollare" un altro codice test, ovvero quello di accensione webcamera, lo posto qui in basso:
"
#include <opencv\cv.h>
#include <opencv\highgui.h>
using namespace cv;
int main(){
Mat image;
VideoCapture cap;
cap.open(0);
namedWindow("window", 1);
while (1){
cap >> image;
imshow("window", image);
waitKey(33);
}
return 0;}
"
...e udite udite, il tutto ha funzionato senza alcun tipo di errore!:D :cool:
Ora, mi chiedo, ho sbagliato qualcosa nel postare il primo codice (apertura immagine) oppure vi è un'incompatibilità con tale funzione e mia scheda video\notebook? (GeForce 740M con ultimi drivers aggiornati\installati):rolleyes: :confused:
Grazie mille anticipate come sempre!;)
tomminno
03-07-2015, 11:35
Scusa ma non ti sei reso conto che è il tuo programma ad essere scritto male?
Hai provato a debuggare passo passo?
Scusa ma non ti sei reso conto che è il tuo programma ad essere scritto male?
Hai provato a debuggare passo passo?
Proprio perchè non sò proprio da dove cominciare, ho pensato di scrivere qui, confidando nell'aiuto di qualcuno, anche perchè mi piacerebbe capire il come mai non funge un codice "semplice-test" di apertura immagine....tutto qui.
Se, cortesemente, riesci a darmi qualche indicazione più precisa di dove potrebbe essere l'errore nello scritto (che ci tengo a precisare non ho fatto altro che copiare-incollare dal web), te ne sarei grato!
Grazie mille!
tomminno
04-07-2015, 13:02
Ripeto hai provato a fare il debug passo passo?
Avresti capito subito che il tuo codice esce sul return -1 e perché...
Un consiglio cerca di capire quello che scrivi e non limitarti a copiare. Hai sbagliato proprio l'unica riga di codice scritta da te: il path del file!
Vedo difficile riuscire ad usare una libreria come opencv senza avere un minimo di basi di C++
Ripeto hai provato a fare il debug passo passo?
Avresti capito subito che il tuo codice esce sul return -1 e perché...
Un consiglio cerca di capire quello che scrivi e non limitarti a copiare. Hai sbagliato proprio l'unica riga di codice scritta da te: il path del file!
Vedo difficile riuscire ad usare una libreria come opencv senza avere un minimo di basi di C++
Ok, ho riesaminato il tutto ed ho notato che avevo inserito "lo slash" in maniera opposta, sul codice di percorso immagine che volevo aprire.:rolleyes:
Grazie per il tuo gentile supporto.;)
Ora che ho capito che effettivamente è tutto impostato in maniera corretta e funzionante;) non mi resta che cercare di modificare il codice di apertura webcam e magari tracciamento oggetti, il tutto in maniera personalizzata circa le mie esigenze:rolleyes: ....spero di riuscirci:eek: :D , nel caso, sperando di non aver abusato troppo della tua pazienza e disponibilità, proverò a scrivere nuovamente qui!;)
P.S. non sò se si è capito, ma prima di chiedere e rompere a chi ne sà più di me, io cerco di capire con manuali e tuturials in giro per il web per quel poco che ne sò in materia, poi dopo X prove e tentativi andati a non buon fine, mi "arrendo" e chiedo!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.