Ama*_*eur 4 opencv hsv grayscale
我是OpenCV的新手.我正在学习分水岭算法的分段,我有一个问题.
我必须使用Watershed将图像颜色转换为图像灰度.当我使用色彩空间BGR,没有问题,但空间HSV,我不确定下面的代码是否正确.
Mat im = imread("./Image/118035.jpg", CV_LOAD_IMAGE_COLOR);
Mat imHSV;
cvtColor(im, imHSV, CV_BGR2HSV);
imshow("HSV", imHSV);
cvtColor(imHSV, imHSV, CV_BGR2GRAY);
imshow("HSV to gray", imHSV);
imshow("BGR", im);
cvtColor(im, im, CV_BGR2GRAY);
imshow("BGR to gray", im);
Run Code Online (Sandbox Code Playgroud)
我认为,在从BGR转换为HSV后,Hue =蓝色,饱和度=绿色,值=红色,我可以使用运算符BGR2GRAY从HSV转换为灰度.
2图像输出不同,我可以将HSV转换为灰度吗?
//与彩色空间LAB相似吗?
Rev*_*ohn 15
从HSV到灰色的转换不是必需的:您已经拥有它.您可以通过将HSV图像分成3并选择第3个通道来选择V通道作为灰度图像:
Mat im = imread("C:/local/opencv248/sources/samples/c/lena.jpg", CV_LOAD_IMAGE_COLOR);
Mat imHSV;
cvtColor(im, imHSV, CV_BGR2HSV);
imshow("HSV", imHSV);
//cvtColor(imHSV, imHSV, CV_BGR2GRAY);
Mat hsv_channels[3];
cv::split( imHSV, hsv_channels );
imshow("HSV to gray", hsv_channels[2]);
imshow("BGR", im);
cvtColor(im, im, CV_BGR2GRAY);
imshow("BGR to gray", im);
waitKey();
Run Code Online (Sandbox Code Playgroud)