35 #include <boost/serialization/singleton.hpp>
36 #include <boost/thread/mutex.hpp>
38 #include <opencv2/highgui/highgui.hpp>
39 #include <opencv2/imgproc/imgproc.hpp>
52 boost::unique_lock<boost::mutex> lock(
mutex_);
56 cv::startWindowThread();
63 cv::namedWindow(name.c_str(), cv::WINDOW_NORMAL);
67 #if (BOOST_VERSION / 100 % 1000) >= 65 && (BOOST_VERSION / 100 % 1000) < 69
68 friend class boost::serialization::singleton<
CvWindows>;
70 friend class boost::serialization::detail::singleton_wrapper<
CvWindows>;
80 const std::string& name,
91 CvWindowsSingleton::get_mutable_instance().RegisterWindow(name);
99 cv::minMaxLoc(mat, &min, &max, 0, 0, mask);
101 if(mat.type() == CV_8UC1)
103 a = 255.0 / std::max(max - min, DBL_EPSILON);
105 mat.convertTo(scaled, CV_8U, a, b);
107 else if(mat.type() == CV_32FC1)
109 a = 255.0 / std::max(max - min, DBL_EPSILON);
111 mat.convertTo(scaled, CV_8U, a, b);
115 cv::cvtColor(scaled, color, cv::COLOR_GRAY2BGR);
116 color.setTo(cv::Scalar(0.0,0.0,255.0), mask == 0);
120 else if(mat.type() == CV_32FC3)
122 a = 255.0 / std::max(max - min, DBL_EPSILON);
124 mat.convertTo(scaled, CV_8UC3, a, b);
126 else if(mat.type() == CV_8UC3)
128 a = 255.0 / std::max(max - min, DBL_EPSILON);
130 mat.convertTo(scaled, CV_8UC3, a, b);
135 mat.convertTo(scaled, CV_8U, a, b);
138 cv::imshow(name, scaled);