利用cvtColor实现图像颜色空间的转换-比如RGB转灰度图等

直接上源码吧,因为一看就会用,源码中的图像也没必要给链接,运行结果也没必要给出!

图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601

//OpenCV版本2.4.9  
//交流QQ2487872782 


#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
int main()
{
	// 图像源读取及判断
    cv::Mat srcImage = cv::imread("lakeWater.jpg");
	if (!srcImage.data)   
       return -1;
    cv::imshow("srcImage", srcImage);
    cv::Mat image_gray, image_hsv, image_H, image_S, image_V, image_col;
    //灰度空间转换
    cv::cvtColor(srcImage, image_gray, CV_BGR2GRAY);   
    cv::imshow("image_gray", image_gray);
    // HSV颜色空间转换
    cv::cvtColor(srcImage, image_hsv, CV_BGR2HSV);
	cv::imshow("image_hsv", image_hsv);  
    // YCrCb颜色空间转换
	cv::cvtColor(srcImage, image_col,  CV_BGR2YCrCb);
	cv::imshow("image_YCrCb", image_col);
	// HLS颜色空间转换
	cv::cvtColor(srcImage, image_col, CV_BGR2HLS);
	cv::imshow("image_HLS", image_hsv);
	// Lab颜色空间转换
	cv::cvtColor(srcImage, image_col, CV_BGR2Lab);
	cv::imshow("image_Lab", image_col);    
    // 分离HSV各个通道
    std::vector<cv::Mat> hsvChannels; 
    cv::split(image_hsv,hsvChannels);
    // 0通道为H分量,1通道为S分量,2通道为V分量
    image_H = hsvChannels[0];
    image_S = hsvChannels[1];
    image_V = hsvChannels[2];
    // 分别显示各通道图像
    cv::imshow("image_H", image_H);
    cv::imshow("image_S", image_S);
    cv::imshow("image_V", image_V);
    cv::waitKey(0);
	return 0;
}

补充说明一下:OpenCV中的图像通道顺序是BGR,而不是RGB,所以上面函数cvtColor()的第三个参数都是CV_BGR2…,而不是CV_RGB2…关于这个问题,详情见我的另一篇博文:

事实证明,OpenCV中对RGB图像数据的存储顺序是BGR,Scalar()的参数顺序也是B,G,R

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值