opencv blur cvtColor split inRange bitwise_and blur clone

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), 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();    

               

dsc blur(dsc, dsc, Size(3, 3));           //高斯模糊

imshow("", dsc);


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

vector<Mat> channels;          //Mat向量容器保存拆分後的數據  
  
assert(srcImg.data!=NULL);  //判斷文件加載是否正確  
      
split(srcImg,channels);          //通道的拆分  
      
imgB = channels.at(0);  
   
imgG = channels.at(1);  
  
imgR = channels.at(2);  
  
merge(channels,mergeImg);  //對拆分的通道數據合併
  

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