mrgloom 242 Жалоба Опубликовано December 14, 2011 IplImage* img; bool flag=true; void onMouse( int event, int x, int y, int, void* ) { if( event == CV_EVENT_LBUTTONDOWN ) { if(flag) cvCircle(img,cvPoint(x,y),3,cvScalar(255,255,255)); else cvCircle(img,cvPoint(x,y),3,cvScalar(0,0,255)); } if( event == CV_EVENT_RBUTTONDOWN ) flag=!flag; } cv::namedWindow( "img", 0 ); cv::setMouseCallback( "img", onMouse, 0 ); for(; { cv::imshow("img", (cv::Mat)img); int c = cv::waitKey(0); switch( (char)c ) { case 27: cout << "Exiting ...\n"; cvSaveImage("out.png",img); return 0; case 'c': { break; } } }[/code] сохраняются они нормально в out.png, а вот при отрисовке не появляются. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 14, 2011 cv::waitKey(0); - ждет бесконечно, надо поставить что то типа: cv::waitKey(10); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано December 14, 2011 Думаю, что поставив последним параметром в cv::namedWindow не ноль, а единицу, ты исправишь положение. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано December 15, 2011 дело вроде было в waitKey но что странно на случай case 'c' постоянно приходится переключать раскладку(на каждой итерации) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах