1.指定图像中的某个区域进行图像处理后加到原图

        (1)先指定敏感区域Mat roi = image(Rect(0,0,100,100));

方框滤波操作boxFilter( roi, out, -1,Size(5, 5));

(3)   再把处理后的图像添加到原图像中

(4)  addWeighted(image(Rect(0,0,out.cols,out.rows)),0,out,1,0.,image(Rect(0,0,out.cols,out.rows)));

(5)最后显示inshow(“”“”,image);

 

 

2.给图像创建轨迹条(以均值滤波为例子)

            (1)先定义Mat类型srcImage,dstImage,设置起始参数值

            (2)定义回调函数static void on_MeanBlur(int ,void *);

            (3)main函数中

                        {

srcImage =imread("1.jpg",1);

//显示原图

//克隆原图到Mat类型中

dstImage = srcImage.clone( );

           namedWindow("【原图窗口】",1);

           imshow("【原图窗口】",srcImage);

/创建窗口

           namedWindow("【均值滤波】",1);

//创建轨迹条

           createTrackbar("内核值:","【均值滤波】",&g_nMeanBlurValue,40,on_MeanBlur);

           on_MeanBlur(g_nMeanBlurValue,0);

 

           waitKey(0);

                        }

                

            (4)配置回调函数

static void on_MeanBlur(int,void *)

           {

//图像处理函数

              blur(srcImage,dstImage,Size(g_nMeanBlurValue+1,g_nMeanBlurValue+1),Point(-1,-1));

              imshow("【方框滤波】",dstImage);

 

           }

3.各种滤波函数:

(1):高斯滤波GaussianBlur(image,out,Size(3,3),0,0);

(2):均值滤波blur(image,out,Size(7,7));

(3):方框滤波boxFilter(image,out,-1,Size(5,5));

(4):中值滤波medianBlur(image,out,7);

(5):双边滤波bilateralFilter(image,out,25,25*2,25/2);

4.图像比例缩小扩大

resize(srcImage,srcImage,Size(srcImage.cols/3,srcImage.rows/3),0,0,INTER_LINEAR);  缩小3倍

5阈值化函数

.函数原型double threshold( InputArray src,OutputArray dst,double threshold,double maxval,int type );

参数说明

src:原始数组,可以是Mat类型。

dst:输出数组,必须与 src 的类型一致。

threshold:阈值

maxval:使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值。

type:阈值类型

type=CV_THRESH_BINARY:如果 src(x,y)>threshold ,dst(x,y) = max_value; 否则,dst(x,y)=0;

type=CV_THRESH_BINARY_INV:如果 src(x,y)>threshold,dst(x,y) = 0; 否则,dst(x,y) = max_value.

type=CV_THRESH_TRUNC:如果 src(x,y)>threshold,dst(x,y) = max_value; 否则dst(x,y) = src(x,y).

type=CV_THRESH_TOZERO:如果src(x,y)>threshold,dst(x,y) = src(x,y) ; 否则 dst(x,y) = 0。

type=CV_THRESH_TOZERO_INV:如果 src(x,y)>threshold,dst(x,y) = 0 ; 否则dst(x,y) = src(x,y).

6颜色空间转换

cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。

具体调用形式如下:

void cv::cvtColor(         
          cv::InputArray src, // 输入序列
          cv::OutputArray dst, // 输出序列
          int code, // 颜色映射码
          int dstCn = 0 // 输出的通道数 (0='automatic')
);

opencv默认的彩色图像的颜色空间是BGR

从RBG和BGR颜色空间转换到灰度空间

    cvtColor(src, gray_src, COLOR_BGR2GRAY);

    从灰度空间转换到RGB和BGR颜色空间

cvtColor(gray_src, img, COLOR_GRAY2BGR);   //灰度图转BGR3通道,但每通道的值都是原先单通道的值,                                               所以也是显示灰色的-----很重要,能用在BGR图像(灰                                                  色)上显示彩色点

7.【OpenCV3】cv::convertScaleAbs()使用详解

     缩放数组元素,计算绝对值并将结果转换为8位无符号整,或图像增强


 

8.normalize 函数介绍

    函数原型:

void normalize(InputArray src,OutputArray dst, double alpha=1, doublebeta=0,                             int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() )

该函数归一化输入数组使它的范数或者数值范围在一定的范围内。