Пример #1
0
void displayImage(const char* windowName, const cv::Mat& image, bool autoSize)
{
	if(useImageDisplayThread)
	{
		if(imageDisplayThread == 0)
			makeDisplayThread();

		boost::unique_lock<boost::mutex> lock(openCVdisplayMutex);
		displayQueue.push_back(DisplayImageObect());
		displayQueue.back().autoSize = autoSize;
		displayQueue.back().img = image.clone();
		displayQueue.back().name = windowName;

		openCVdisplaySignal.notify_one();
	}
	else
	{
		if(!autoSize)
		{
			if(openWindows.find(windowName) == openWindows.end())
			{
				cv::namedWindow(windowName, cv::WINDOW_NORMAL);
				cv::resizeWindow(windowName, image.cols, image.rows);
				openWindows.insert(windowName);
			}
		}
		cv::imshow(windowName, image);
	}
	//cv::waitKey(1);
}
void displayImage(const char* windowName, const cv::Mat& image, bool autoSize)
{

    // ASMOD - use qt


    return;


    if(useImageDisplayThread)   //default true
	{
		if(imageDisplayThread == 0)
			makeDisplayThread();

		boost::unique_lock<boost::mutex> lock(openCVdisplayMutex);
		displayQueue.push_back(DisplayImageObect());
		displayQueue.back().autoSize = autoSize;
		displayQueue.back().img = image.clone();
		displayQueue.back().name = windowName;

		openCVdisplaySignal.notify_one();
	}
	else
	{
		if(!autoSize)
		{
			if(openWindows.find(windowName) == openWindows.end())
			{
                cv::namedWindow(windowName, cv::WINDOW_NORMAL);
				cv::resizeWindow(windowName, image.cols, image.rows);
				openWindows.insert(windowName);
			}
		}
        // ASDISPLAY
        cv::imshow(windowName, image);
        // AS - added 3 lines below
        //cv::waitKey(5);
        //cv::namedWindow("Lalala", CV_WINDOW_AUTOSIZE);
        //cv::imshow("Lalala", image);
	}
    //cv::waitKey(1);
}
void displayImage(const char* windowName, const cv::Mat& image, bool autoSize)
{
    if( useImageDisplayThread )
	{
        // Если поток еще небыл запущен
		if(imageDisplayThread == 0)
            // Запустить поток
			makeDisplayThread();

        // Заблокировать доступ к данным
		boost::unique_lock<boost::mutex> lock(openCVdisplayMutex);

        // Добавить новый экземпляра объекта изображения
        displayQueue.push_back( DisplayImageObect() );

        // Установить прпаметры нового объекта
        displayQueue.back().autoSize    = autoSize;
        displayQueue.back().img         = image.clone();
        displayQueue.back().name        = windowName;

        // Если есть потоки, ожидающие расблокировки
        // Расблокируется один из ожидающих
		openCVdisplaySignal.notify_one();
	}
	else
	{
        // Если параметр не установлен
		if(!autoSize)
		{
			if(openWindows.find(windowName) == openWindows.end())
			{
                cv::namedWindow (windowName, cv::WINDOW_NORMAL);
				cv::resizeWindow(windowName, image.cols, image.rows);

				openWindows.insert(windowName);
			}
		}
		cv::imshow(windowName, image);
	}
    // cv::waitKey(1);
}