2.opencv常用函数

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

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

        (2)        在进行图像处理,如方框滤波操作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,intype );

参数说明

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位无符号整,或图像增强

        https://blog.csdn.net/guduruyu/article/details/81605726

 

8.normalize 函数介绍

    函数原型:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值