zoukankan      html  css  js  c++  java
  • opencv 学习笔记

    Opencv 笔记

    路径问题:

    路径输入:Opencv载Qt中不能出现汉字,路径也不能出现汉字在vs中可以出现。

    (”D:/QTopencv/.1jpg”)=(”D:\QTopencv\.1jpg”)

    形态学函数操作;

    Mat element = getStructuringElement( erosion_type, Size( 2*erosion_size + 1, 2*erosion_size+1 ), Point( erosion_size, erosion_size ) );

    Erode( I,I1,element)

    I:原始图像,I1腐蚀后图像;

    Erosion_type(腐蚀类型,MORPH—形态学)

    矩形:MORPH_RECT

    交叉形:MORPH_CROSS

    椭圆:MORPH_ELLIPSE

    空间颜色转换:

    cvtclolor(原始图像,转换后图像,转换类型);

    blurl滤波

     blur(InputArray src,OutputArray dst,Size ksize,Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT )
    src:输入图像

    dst:输出图像

    ksize: 模糊核的大小

    常用函数;

    Mat srcImage = imread("C:/Users/Administrator/Desktop/车牌识别/车牌图像库/1.jpg");//读入图像函数

    imshow("原图",srcImage);//显示图像函数

    imwrite("图3.jpg",imageRIO);//保存图像函数

    Mat imageRIO = srcImage(Rect(50,50,100,000));//感兴趣区域函数

    cvtColor(srcImage,dstImage,CV_BGR2GRAY);//图像灰度化

    //边缘检测 Sobel Laplacian Canny 其中Canny算子只能处理(8位)灰度图,其余两种8位32位都可以

    Mat grad_x,grad_y;

    Sobel(imgGray,grad_x,CV_8U,1,0,3,1,1);//X方向上的Sobel算子检测,其中3,1,0都是默认值

    Sobel(imgGray,grad_y,CV_8U,0,1,3,1,0);//Y方向上的Sobel算子检测,其中3,1,0都是默认值

    addWeighted(grad_x,0.5,grad_y,0.5,0,dstImage);//合并梯度

    Laplacian(imgGray,dstImage,CV_8U);

    Canny(imgGray,dstImage,50,200,3);//50和200表示第一个滞后性阈值和第二个滞后性阈值,较小者用于边缘连接,较大者控制强边缘的初始段,达阈值opnecv推荐为小阈值的3倍;

    //3表示应用的Sobel算子的孔径大小 有默认值为3;

    // 寻找轮廓 只处理8位 即灰度图像

    vector<vector<Point>> contours;

    findContours(imgGray,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);

    drawContours(dstImage,contours,-1,Scalar(0),3);

    imshow("轮廓图",dstImage);

    //阈值化操作

    threshold(srcImage,dstImage,100,255,3);

    imshow("固定阈值化图像",dstImage);

    adaptiveThreshold(imgGray,dstImage,255,ADAPTIVE_THRESH_MEAN_C,THRESH_BINARY,3,1);

    imshow("自适应阈值化图像",dstImage);

    // resize函数实现

    resize(srcImage,dstImage,Size(),0.5,0.5);//缩小为一半

    resize(srcImage,dstImage,Size(),2,2);//放大2倍

    resize(srcImage,dstImage,Size(srcImage.cols*3,srcImage.rows*3));//放大3倍

    // 金字塔函数实现

    pyrUp(srcImage,dstImage,Size(srcImage.cols*2,srcImage.rows*2));// 放大2倍

    pyrDown(srcImage,dstImage,Size(srcImage.cols/2,srcImage.rows/2));// 缩小2倍

    //漫水填充算法

    Rect ccomp;

    floodFill(srcImage,Point(50,300),Scalar(155,255,55),&ccomp,Scalar(20,20,20),Scalar(20,20,20));

    //膨胀腐蚀

    Mat element = getStructuringElement(MORPH_RECT,Size(15,15));

    erode(srcImage,dstImage,element);//腐蚀函数

    dilate(srcImage,dstImage,element);//膨胀函数

    morphologyEx(g_bgrImage,g_bgrImage, MORPH_CLOSE, element);//闭运算

    morphologyEx(g_bgrImage,g_bgrImage, MORPH_OPEN, element);//开运算

    //滤波

    boxFilter(srcImage,dstImage,-1,Size(3,3));

    imshow("方框滤波图",dstImage);

    blur(srcImage,dstImage,Size(3,3));

    imshow("均值滤波图",dstImage);

    GaussianBlur(srcImage,dstImage,Size(5,7),1,1);

    imshow("高斯滤波图",dstImage);

    medianBlur(image,out,7);//中值滤波,7为孔径的线性尺寸

    bilateralFilter(src,dst,d,sigmaColor,sigmaSpace);//双边滤波,d表示过滤过程中每个像素邻域的直径,sigmaColor颜色空间滤波器的sigma值,sigmaSpace表示坐标空间中滤波器的sigma值

    bilateralFilter(image,out,25,25*2,25/2);

    背景问题

    颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:
        0 = 黑色       8 = 灰色
        1 = 蓝色       9 = 淡蓝色
        2 = 绿色       A = 淡绿色
        3 = 湖蓝色     B = 淡浅绿色
        4 = 红色       C = 淡红色
        5 = 紫色       D = 淡紫色
        6 = 黄色       E = 淡黄色
        7 = 白色       F = 亮白色
    system("color 02");比如这个就是黑底绿字

    创建矩阵

    Mat scrImmage, dstImage;//原始图像,

    1、dstImage. create(srcImage .rows,  srcImage .cols, srcImage. type());

    2、dstImage = Mat::zeros(srcImage.size(), srcImage.type());

    3、dstImage=srcImage.clone();

    效果的大小,类型与原图像相同;

    创建滑动条

    creatTrackbar(const string& trackbarname, const string &winname, int *value ,int count,TrackbarCallback onChange=0,void* userdata=0)

    1、第一个参数轨迹条名字,

    2、第二个参数窗口名字

    3、int性的指针,一个指向整型的指针,表示滑块位置。在创建时滑块的初始位置就是该变量的值。

    4、第四个参数int*类型的count,表示滑块可以达到的最大位置,滑块最小位置始终为0;

  • 相关阅读:
    windows编程学习笔记
    自学JAVA-12:MySQL数据库
    自学JAVA-11:IO流
    自学JAVA-10:集合
    自学JAVA-9:基本类常用方法整理
    自学JAVA-8:异常
    自学JAVA-7:多态
    自学JAVA-6:继承
    自学JAVA-5:修饰符、对象初始化
    自学JAVA-4:方法、对象、类、属性
  • 原文地址:https://www.cnblogs.com/hsy1941/p/7066563.html
Copyright © 2011-2022 走看看