【20160924】GOCVHelper 图像增强部分(4)

简介: //使得rect区域半透明     Mat translucence(Mat src,Rect rect,int idepth){         Mat dst = src.clone();         Mat roi = dst(rect);         roi += cv::Scalar(idepth,idepth,idepth);         return dst;     }   将选择的区域打上变成半透明。
//使得rect区域半透明
    Mat translucence(Mat src,Rect rect,int idepth){
        Mat dst = src.clone();
        Mat roi = dst(rect);
        roi += cv::Scalar(idepth,idepth,idepth);
        return dst;
    }
 
将选择的区域打上变成半透明。虽然这只是一个简单的函数,但是使用起来灵活多变。
比如说,可以将图像某个区域变成半透明,然后在上面写字,这样起到强化作用;
也可以将一个区域图片在半透明和不透明之间切换,起到强掉作用。
 
 
    //使得rect区域打上马赛克
    Mat mosaic(Mat src,Rect rect,int W,int H){
        Mat dst = src.clone();
        Mat roi = dst(rect);
        for (int i=Wi<roi.colsi+=W) {
            for (int j=Hj<roi.rowsj+=H) {
                uchar s=roi.at<uchar>(j-H/2,(i-W/2)*3);
                uchar s1=roi.at<uchar>(j-H/2,(i-W/2)*3+1);
                uchar s2=roi.at<uchar>(j-H/2,(i-W/2)*3+2);
                for (int ii=i-Wii<=iii++) {
                    for (int jj=j-Hjj<=jjj++) {
                        roi.at<uchar>(jj,ii*3+0)=s;
                        roi.at<uchar>(jj,ii*3+1)=s1;
                        roi.at<uchar>(jj,ii*3+2)=s2;
                    }
                }
            }
        }

        return dst;

}
将选择的区域打上马赛克,也就是常见的所谓打码。
 
//基于颜色直方图的距离计算
double GetHsVDistance(Mat src_base,Mat src_test1){
    Mat   hsv_base;
    Mat   hsv_test1;
    ///  Convert  to  HSV
    cvtColor(  src_base,  hsv_base,  COLOR_BGR2HSV  );
    cvtColor(  src_test1,  hsv_test1,  COLOR_BGR2HSV  );
    ///  Using  50  bins  for  hue  and  60  for  saturation
    int  h_bins  =  50;  int  s_bins  =  60;
    int  histSize[]  =  {  h_bins,  s_bins  };
    //  hue  varies  from  0  to  179,  saturation  from  0  to  255
    float  h_ranges[]  =  {  0,  180  };
    float  s_ranges[]  =  {  0,  256  };
    const  float*  ranges[]  =  {  h_ranges,  s_ranges  };
    //  Use  the  o-th  and  1-st  channels
    int  channels[]  =  {  0,  1  };
    ///  Histograms
    MatND  hist_base;
    MatND  hist_test1;
    ///  Calculate  the  histograms  for  the  HSV  images
    calcHist(  &hsv_base,  1,  channels,  Mat(),  hist_base,  2,  histSize,  ranges,  true,  false  );
    normalize(  hist_base,  hist_base,  0,  1,  NORM_MINMAX,  -1,  Mat()  );
    calcHist(  &hsv_test1,  1,  channels,  Mat(),  hist_test1,  2,  histSize,  ranges,  true,  false  );
    normalize(  hist_test1,  hist_test1,  0,  1,  NORM_MINMAX,  -1,  Mat()  );
    ///  Apply  the  histogram  comparison  methods
    double  base_test1  =  compareHist(  hist_base,  hist_test1,  0  );
    return base_test1;
}
基于颜色直方图的增强算法是一种经典的图像增强算法。这里提供了opencv实现。这个部分应该是从gimp中扒出来的。
 
 
 





目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
目录
相关文章
|
6月前
halcon的灰度变换(图像增强)
halcon的灰度变换(图像增强)
386 1
|
6月前
|
算法 计算机视觉
[Halcon&图像] 图像滤波算法原理
[Halcon&图像] 图像滤波算法原理
229 1
|
6月前
|
算法
[Halcon&图像] 边缘提取算法汇总
[Halcon&图像] 边缘提取算法汇总
378 0
|
6月前
|
算法
[Halcon&图像] 图像阈值分割算法汇总
[Halcon&图像] 图像阈值分割算法汇总
187 0
|
机器学习/深度学习 传感器 算法
【图像融合】基于小波变换DWT的高分辨率全色图图像融合(含评价指标)附Matlab代码
【图像融合】基于小波变换DWT的高分辨率全色图图像融合(含评价指标)附Matlab代码
|
数据可视化 算法 计算机视觉
【计算机视觉】图像增强----图像的傅立叶变换
【计算机视觉】图像增强----图像的傅立叶变换
644 0
【计算机视觉】图像增强----图像的傅立叶变换
|
机器学习/深度学习 人工智能 算法
【图像配准】基于SURF特征实现印刷体汉字配准附matlab代码
【图像配准】基于SURF特征实现印刷体汉字配准附matlab代码
|
计算机视觉
OpenCV小项目:图像融合(泊松融合—Possion Blending)
OpenCV小项目:图像融合(泊松融合—Possion Blending)
829 0
OpenCV小项目:图像融合(泊松融合—Possion Blending)
Halcon图像增强算子(直方图均衡化等)
Halcon图像增强算子(直方图均衡化等)
1509 0
|
计算机视觉 算法
基于opencv模板匹配的目标识别方法
因为pcl的点云模板匹配遇到了各种困难,暂时先用opencv的模板匹配函数做一个简单的焊缝识别,看看效果。此方法的缺陷就在于物体和相机位置必须固定,只允许微小位移,否则数据将失效。
4478 0