Mat  FeatureGaborBlob::getColorCodedBlob(){
	Mat hsv_img(_blob.size(), CV_32FC3);
	Vec3f  hsv_clr ;
	hsv_clr(0) = _angle ;
	hsv_clr(1) = 1.0 ;
	for ( int row = 0 ; row < hsv_img.rows ; row++ )
		for ( int col = 0 ; col < hsv_img.cols ; col ++ ){
			hsv_clr(2) = _blob.at<float>(row, col);
			hsv_img.at<Vec3f>(row, col) = hsv_clr ;
		}
	Mat rgb_img ;
	cvtColor(hsv_img, rgb_img, COLOR_HSV2RGB);
	return rgb_img ;
}
示例#2
0
int main(int argc, char* argv[])
{
	cv::Mat hsv_img(cv::Size(480, 240), CV_8UC3);
	cv::Mat canvas_img;

	cv::namedWindow(win_name_canvas);
	cv::createTrackbar("H", win_name_canvas, &val_h, 179, nullptr, nullptr);
	cv::createTrackbar("S", win_name_canvas, &val_s, 255, nullptr, nullptr);
	cv::createTrackbar("V", win_name_canvas, &val_v, 255, nullptr, nullptr);

	while(true) {
		// HSV -> BGR
		hsv_img.setTo(cv::Scalar(val_h, val_s, val_v));
		cv::cvtColor(hsv_img, canvas_img, cv::COLOR_HSV2BGR);

		// test : HSV -> BGR -> HSV
		uchar r, g, b, h, s, v;
		h = (uchar)val_h;
		s = (uchar)val_s;
		v = (uchar)val_v;
		hsv2rgb(h, s, v, r, g, b);
		rgb2hsv(r, g, b, h, s, v);

		cv::Vec3b hsv = hsv_img.at<cv::Vec3b>(cv::Point(0, 0));
		cv::Vec3b rgb = canvas_img.at<cv::Vec3b>(cv::Point(0, 0));

		draw_rgbhsv(canvas_img, "opencv: ", 10, 20, rgb[2], rgb[1], rgb[0], hsv[0], hsv[1], hsv[2]);
		draw_rgbhsv(canvas_img, "test: ", 34, 46, r, g, b, h, s, v);

		cv::imshow(win_name_canvas, canvas_img);

		int c = cv::waitKey(1);
		if (c == 27) break;
	}
	cv::destroyAllWindows();
 
	return 0;
}