opencv 函数使用具体细节记录

1。高斯模糊

GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT ) ;

作用:可以去除部分噪声点

使用:Size ksize;为高斯模板的大小,一般是方阵,输入参数时,EX:Size(3,3)。

2.获取\赋值Mat中的某点的数据

Mat img(3,3,CV_32FC1);

s=img.at<float>(i,j);    //获取在(i.j)位置的元素  float指的是矩阵里存储的数据的格式

img.at<float>(i,j) = 2.f; //给(i,j)位置的元素赋值为2

3.Sobel 求梯度

Mat img1=imread("D:\\lena.jpg",0);
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;
Sobel( img1, grad_x,img1.depth(), 1,0, 3);   //1,0求列方向上的梯度
convertScaleAbs( grad_x, abs_grad_x );     //0,1求行方向上的梯度
Sobel( img1, grad_x,img1.depth(),0,  1,3);
convertScaleAbs( grad_y, abs_grad_y );

4.图像的镜像复制

copyMakeBorder( const Mat& src, Mat& dst,int top, int bottom, int left, int right,int borderType, const Scalar& value=Scalar()        (1)top,bottom,left,right:上下左右四个方向分别需要增加多宽的边界

(2)borderType:边界类型,来决定如何赋值新增加的边界。

1.BORDER_CONSTANT:使用常数(value参数)填充边界(默认为0)

2.BORDER_REPLICATE:复制图像最邻近的行或列

(3)value:如果类型为BORDER_CONSTANT时,新增像素赋值为value,默认为0

copyMakeBorder( src,dst,20, 20, 20, 20,BORDER_REPLICATE);

5.对Mat型数据求平均值

Mat img = imread("lena.jpg");

CvScalar s;

s = mean(img,noArray());

6.取Mat矩阵部分值

Mat a;

Mat b=a(Range(i,j),Range::all());

Mat c= a(Range(i,j).Range(i,j));//取范围为[i,j),前开后闭



你可能感兴趣的:(opencv 函数使用具体细节记录)