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 ; }
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; }