opencv split

来源:互联网 发布:网络招投标系统 编辑:程序博客网 时间:2024/06/05 15:49
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);
原创粉丝点击