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() )
该函数归一化输入数组使它的范数或者数值范围在一定的范围内。