zoukankan      html  css  js  c++  java
  • OpenCV图像处理中常用函数汇总(1)

     1 //俗话说:好记性不如烂笔头
     2 //用到opencv 中的函数时往往会一时记不起这个函数的具体参数怎么设置,故在此将常用函数做一汇总;
     3 
     4 Mat srcImage = imread("C:/Users/Administrator/Desktop/车牌识别/车牌图像库/1.jpg");//读入图像函数
     5 
     6 imshow("原图",srcImage);//显示图像函数
     7 
     8 imwrite("图3.jpg",imageRIO);//保存图像函数
     9 
    10 Mat imageRIO = srcImage(Rect(50,50,100,000));//感兴趣区域函数
    11 
    12 cvtColor(srcImage,dstImage,CV_BGR2GRAY);//图像灰度化
    13 
    14 
    15 //边缘检测 Sobel Laplacian Canny 其中Canny算子只能处理(8位)灰度图,其余两种8位32位都可以
    16 Mat grad_x,grad_y;
    17 Sobel(imgGray,grad_x,CV_8U,1,0,3,1,1);//X方向上的Sobel算子检测,其中3,1,0都是默认值
    18 
    19 Sobel(imgGray,grad_y,CV_8U,0,1,3,1,0);//Y方向上的Sobel算子检测,其中3,1,0都是默认值
    20 
    21 addWeighted(grad_x,0.5,grad_y,0.5,0,dstImage);//合并梯度
    22 
    23 Laplacian(imgGray,dstImage,CV_8U);
    24 
    25 Canny(imgGray,dstImage,50,200,3);//50和200表示第一个滞后性阈值和第二个滞后性阈值,较小者用于边缘连接,较大者控制强边缘的初始段,达阈值opnecv推荐为小阈值的3倍;
    26 //3表示应用的Sobel算子的孔径大小 有默认值为3;
    27 
    28 // 寻找轮廓 只处理8位 即灰度图像
    29 vector<vector<Point>> contours;
    30 findContours(imgGray,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
    31 drawContours(dstImage,contours,-1,Scalar(0),3);
    32 imshow("轮廓图",dstImage);
    33 
    34 
    35 //阈值化操作
    36 threshold(srcImage,dstImage,100,255,3);
    37 imshow("固定阈值化图像",dstImage);
    38 adaptiveThreshold(imgGray,dstImage,255,ADAPTIVE_THRESH_MEAN_C,THRESH_BINARY,3,1);
    39 imshow("自适应阈值化图像",dstImage);
    40 
    41 
    42 // resize函数实现
    43 resize(srcImage,dstImage,Size(),0.5,0.5);//缩小为一半
    44 resize(srcImage,dstImage,Size(),2,2);//放大2倍
    45 resize(srcImage,dstImage,Size(srcImage.cols*3,srcImage.rows*3));//放大3倍
    46 
    47 
    48 // 金字塔函数实现
    49 pyrUp(srcImage,dstImage,Size(srcImage.cols*2,srcImage.rows*2));// 放大2倍
    50 pyrDown(srcImage,dstImage,Size(srcImage.cols/2,srcImage.rows/2));// 缩小2倍
    51 
    52 //漫水填充算法
    53 Rect ccomp;
    54 floodFill(srcImage,Point(50,300),Scalar(155,255,55),&ccomp,Scalar(20,20,20),Scalar(20,20,20));
    55 
    56 //膨胀腐蚀
    57 Mat element = getStructuringElement(MORPH_RECT,Size(15,15));
    58 erode(srcImage,dstImage,element);//腐蚀函数
    59 dilate(srcImage,dstImage,element);//膨胀函数
    60 
    61 morphologyEx(g_bgrImage,g_bgrImage, MORPH_CLOSE, element);//闭运算
    62 
    63 morphologyEx(g_bgrImage,g_bgrImage, MORPH_OPEN, element);//开运算
    64 
    65 
    66 //滤波
    67 boxFilter(srcImage,dstImage,-1,Size(3,3));
    68 imshow("方框滤波图",dstImage);
    69 
    70 blur(srcImage,dstImage,Size(3,3));
    71 imshow("均值滤波图",dstImage);
    72 
    73 GaussianBlur(srcImage,dstImage,Size(5,7),1,1);
    74 imshow("高斯滤波图",dstImage);
    75 
    76 medianBlur(image,out,7);//中值滤波,7为孔径的线性尺寸
    77 bilateralFilter(src,dst,d,sigmaColor,sigmaSpace);//双边滤波,d表示过滤过程中每个像素邻域的直径,sigmaColor颜色空间滤波器的sigma值,sigmaSpace表示坐标空间中滤波器的sigma值
    78 bilateralFilter(image,out,25,25*2,25/2);
    79 
    80 //《未完待续》
    81  
  • 相关阅读:
    [Typescript] Augmenting Modules with Declarations
    [Postgres] On conflict Do Something Clause in Postgres
    [React] Debug Custom React Hooks With useDebugValue
    为什么不推荐通过Executors直接创建线程池
    JAVA线程池使用注意事项
    Java线程池使用的注意事项
    分布式事务(六)总结提高
    分布式事务(五)源码详解
    分布式事务(三)mysql对XA协议的支持
    分布式事务(二)Java事务API(JTA)规范
  • 原文地址:https://www.cnblogs.com/ggYYa/p/5687046.html
Copyright © 2011-2022 走看看