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);
發佈了252 篇原創文章 · 獲贊 132 · 訪問量 72萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章