opencv split

cv::Mat dsc(img_rgb.size(), CV_8U, cv::Scalar(0));

//分离
cv::Mat  hsv1(img_rgb.size(), CV_8U, cv::Scalar(0));
cv::Mat  tmpH1(img_rgb.size(), CV_8U, cv::Scalar(0));
cv::Mat  tmpH4(img_rgb.size(), CV_8U, cv::Scalar(0));
cv::Mat  tmpH2(img_rgb.size(), CV_8U, cv::Scalar(0));

cv::Mat  tmpH3(img_rgb.size(), CV_8U, cv::Scalar(0));


blur(img_rgb, img_rgb, cv::Size(3, 3));          //高斯模糊   
cvtColor(img_rgb, hsv1, CV_BGR2HSV); //颜色转换     

vector<cv::Mat> mv;
split(hsv1, mv);                                               //分为3个通道    

inRange(mv[0], Scalar(10, 0.0, 0, 0), Scalar(100, 0.0, 0, 0), tmpH1);
inRange(mv[1], Scalar(20.0, 0.0, 0, 0), Scalar(110, 0.0, 0, 0), tmpH2);
inRange(mv[2], Scalar(30, 0.0, 0, 0), Scalar(120.0, 0.0, 0, 0), tmpH3);

bitwise_and(tmpH3, tmpH2, tmpH2);

bitwise_and(tmpH1, tmpH2, tmpH1);


blur(tmpH1, tmpH1, Size(3, 3));                         //高斯模糊   
dsc = tmpH1.clone();

blur(dsc, dsc, Size(3, 3));
imshow("dsc", dsc);

Mat srcImg;
Mat imgB, imgG, imgR;
Mat mergeImg;

vector<cv::Mat> channels;                                  //Mat向量容器保存拆分后的数据  

//判断文件加载是否正确  
assert(srcImg.data != NULL);

//通道的拆分  
split(srcImg, channels);

imgB = channels.at(0);
imgG = channels.at(1);
imgR = channels.at(2);
imshow("image", imgB);

//对拆分的通道数据合并  
merge(channels, mergeImg);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值