SeaMonster131 Temat założony przez niniejszego użytkownika |
[OpenCV] Wyświetlanie obrazu » 2012-02-05 15:45:14 Witam, po prostu, kiedy chciałbym wyświetlić obraz z kamerki, aplikacja się wywala (Wysyłaj / Nie wysyłaj), kod wygląda tak: #include <cstdio> using namespace std;
#include "opencv2/highgui/highgui.hpp" using namespace cv;
VideoCapture camera;
const int FPS = 30;
int main( int argc, char * argv[] ) { camera.open( 0 ); if( !camera.isOpened() ) { printf( "Nie udalo sie polaczyc!\n" ); getchar(); return - 1; } else { printf( "Udalo sie polaczyc!\n" ); camera.set( CV_CAP_PROP_FRAME_WIDTH, 640 ); camera.set( CV_CAP_PROP_FRAME_HEIGHT, 480 ); Mat inputImage; char key = 0; while( key != 'k' ) { camera >> inputImage; imshow( "Camera Image", inputImage ); key = waitKey( 1000 / FPS ); } } return 0; }
Kiedy usunę imshow( "Camera Image", inputImage ); to aplikacja się nie wywala. Kamerka w innych aplikacja działa prawidłowo...Co może być przyczyną? :( Wersja OpenCV to 2.3.1 |
|
npHard |
» 2012-02-05 22:12:01 Z tego co pamiętam to w OpenCV najpierw trzeba stworzyć okno. Są ku temu odpowiednie funkcji. Potem nazwę tego okna podajesz jako pierwszy parametr funkcji imshow. Ty podajesz "Camera Image" a nigdzie takiego okna nie tworzysz i zapewne dlatego się wywala.
Ale mogę się mylić bo OpenCV używałem jakiś rok temu.
Edit:
tutaj masz dokumentację
http://opencv.willowgarage.com/documentation/cpp/user_interface.html
Jest opis funkcji imshow a niżej jest też funkcja namedWindow i to chyba jej szukasz. |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-02-06 16:33:50 Niestety aplikacja dalej się wywala.. :( |
|
malan |
» 2012-02-06 22:07:57 Spróbuj tak: char key = 0; while( key != 'k' ) { Mat inputImage; camera >> inputImage; imshow( "Camera Image", inputImage ); key = waitKey( 1000 / FPS ); } |
|
DejaVu |
» 2012-02-06 22:15:54 1. Sprawdź kod z tutoriala czy działa
2. Jeżeli kod z tutoriala się sypie to prawdopodobnie masz inne pliki DLL niż liby, które linkujesz. |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-02-06 22:17:42 To jest właśnie kod z tutka :) Hm to zaraz zobaczę te liby i dll. |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-02-13 13:50:50 Pokombinowałem troche, i w pewnym sensie się udalo, ale dalej nie działa. Debugger pokazuje coś o pliku libopencv_highgui231.dll (opencv\build\x86\mingw\bin), więc wziąłem prosty przykład, z folderu opencv/common/x86 skopiowałem plik opencv_highgui231.dll zmieniłem jego nazwe dodając na początku "lib", i program się uruchomił: int main( int argc, char * argv[] ) { cvNamedWindow( "View", CV_WINDOW_AUTOSIZE ); cvMoveWindow( "View", 10, 10 ); cvWaitKey( 0 ); }
Natomiast, gdy już użyłem tego "mojego" kodu z wcześniejszego postu, to musiałem dodać jeszcze plik "libstdc++-6.dll" oraz "libopencv_core231.dll", przy czym zmienienie nazwy jakoś nie pomogło (wyskakiwał błąd, że nie znaleziono jakiejś tam procedury). Tak więc hm.. Jak dla mnie to ten plik libopencv_highgui231.dll może być jakiś felerny czy coś.. -.- a Wy jak myślicie? |
|
DejaVu |
» 2012-02-13 13:56:24 Pobierz OpenCV skompiluj go ze źródeł i problemów nie będzie :) |
|
« 1 » 2 |