学习OpenCV:滤镜系列(14)——载入选区

【原文:http://blog.csdn.net/yangtrees/article/details/9207171

==============================================

版权所有:小熊不去实验室CSDN博客

==============================================


载入选区就是在图像中选取高亮的部分

R=min(127.5,avg)

if(pix[x,y]>R)

dst[x,y]=255;

else

dst[x,y]=255;


  1. #include <math.h>  
  2. #include <opencv/cv.h>  
  3. #include <opencv/highgui.h>  
  4.   
  5. using namespace cv;  
  6. using namespace std;  
  7.   
  8. int R=11;  
  9.   
  10. int main()  
  11. {  
  12.     Mat src = imread("D:/img/arrow03.jpg",1);  
  13.     imshow("src",src);  
  14.     int width=src.cols;  
  15.     int heigh=src.rows;  
  16.     Mat img(heigh/2,width/2,CV_8UC3);  
  17.     resize(src,img,img.size());  
  18.     Scalar avg=mean(src);  
  19.     Mat dst(img.size(),CV_8UC3);  
  20.     Mat mask1u[3];  
  21.     float avg0 = avg[0]*2>127.5 ? 127.5:avg[0]*2;  
  22.     float avg1 = avg[1]*2>127.5 ? 127.5:avg[1]*2;  
  23.     float avg2 = avg[2]*2>127.5 ? 127.5:avg[2]*2;  
  24.     float tmp,r;  
  25.     for (int y=0;y<heigh/2;y++)  
  26.     {  
  27.         uchar* imgP=img.ptr<uchar>(y);  
  28.         uchar* dstP=dst.ptr<uchar>(y);  
  29.         for (int x=0;x<width/2;x++)  
  30.         {  
  31.             r = (float)imgP[3*x];  
  32.             if(r>avg0)  
  33.                 tmp = 255;  
  34.             else  
  35.                 tmp = 0;  
  36.             dstP[3*x]=(uchar)(tmp);  
  37.               
  38.             r = (float)imgP[3*x+1];  
  39.             if(r>avg1)  
  40.                 tmp = 255;  
  41.             else  
  42.                 tmp = 0;  
  43.             dstP[3*x+1]=(uchar)(tmp);  
  44.   
  45.             r = (float)imgP[3*x+2];  
  46.             if(r>avg2)  
  47.                 tmp = 255;  
  48.             else  
  49.                 tmp = 0;  
  50.             dstP[3*x+2]=(uchar)(tmp);  
  51.         }  
  52.     }  
  53.     imshow("载入选区",dst);  
  54.   
  55.     split(dst,mask1u);  
  56.     imshow("蓝通道选区",mask1u[0]);  
  57.     imshow("绿通道选区",mask1u[1]);  
  58.     imshow("红通道选区",mask1u[2]);  
  59.   
  60.     waitKey();  
  61.     //imwrite("D:/img/强光.jpg",dst);  
  62.     imwrite("D:/img/蓝通道选区.jpg",mask1u[0]);  
  63.     imwrite("D:/img/蓝通道选区.jpg",mask1u[1]);  
  64.     imwrite("D:/img/蓝通道选区.jpg",mask1u[2]);  
  65.   
  66. }  

原图:


载入选区:

红通道:                                                            绿通道:                                                          

      

蓝通道:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值