精华内容
下载资源
问答
  • opencv学习心得

    千次阅读 2017-08-13 20:10:12
    Opencv学习(二) 1. 函数命名 cvAction(表示核心函数Set,Create)Target(图像区域)Mod(变量类型) 矩阵函数类型 通用CV_(S|U|F)C S:符号整数 U:无符号整数 F:浮点数 CV_8UC1  8位无符号整数单通道矩阵...

    Opencv学习(二)

    1.    函数命名

    cvAction(表示核心函数Set,Create)Target(图像区域)Mod(变量类型)

    矩阵函数类型

    通用CV_<bit_depth>(S|U|F)C<number_of_channels>

    S:符号整数

    U:无符号整数

    F:浮点数

    CV_8UC1  8位无符号整数单通道矩阵

    图像数据类型

     IPL_DEPTH_32F  表示32位浮点数图像

    CVPoint  p=cvPoint(int x,int y);

    CVPoint2D32f  p=cvPoint2D32f(float x,float y);

    CVSize   r=cvSize(int width,int height);

    CVRect r=cvRect(intx,int y,int width,int height);

    分配矩阵

    CvMat*cvCreateMat(int rows,int cols,int type);

     

    CvMat*M=cvCreateMat(4,4,CV_32FC1);

    cvReleaseMat(&M);

    CvMat*cvCloneMat(CvMat*);复制矩阵。

    CvMat*M1=cvCreateMat(4,4CV_32FC1);

    CvMat*M2;

    M2=cvCloneMat(M1);

    初始化矩阵

    Double a[  ]={1,2,3,4,

                 5,6,7,8,

                 9,10,11,12};

    CvMatMa=cvMat(3,4,CV_64FC1,a);或;

    CvMat Ma;

    cvintMatHeader(&Ma,3,4,CV_64FC1,a);

    访问矩阵

    1.    直接访问

    cvmSet(M,i,j,2,0);M(I,j)赋值

           t=cvmGet(M,I,j);

    已知对齐方式的直接访问:

          CvMat*M =cvCreateMat (4,4,CV_32FC1);

          Int  n =M->cols;

          Float *data =M->data.fl;

          Data[ i*n+j]=3.0;

    未知对齐方式的直接访问

    CvMat*M =cvCreateMat (4,4,CV_32FC1);

    Int step =M->step/sizeof/(float);

    Float *data =M->data.fl;

    (data+i*step)[j]=3.0;

    直接访问一个已知初始化的矩阵

        Double a[16];

       CvMat Ma=cvMat(3,4,CV_64FCI,a);

    A[i*4+j]=2.0

     

     

    GUI命令

       创建定位一个窗口:

     cvNameWindow(“win1”,CV_WINDOW_AUTOSIZE);

    cvMoveWindow(“win1”,100,100);

    加载一幅图片

    IplImage*img=0;

    Img=cvLoadImage(fileName);

    If(!img)printf(“Could not load image file:%s\n”,fileName);

    显示一幅图像

    cvShowImage(“win1”,img);

    关闭窗口

    cvDestroyWindow(“win1”);

    缩放窗口

    cvResizeWindow(“win1”,100,100);

          分配一幅图像

           IpIImage*img1=cvCreatImage(cvSize(640,480),IPL_DEPTH_8U,1);

          cvReleseImage(&img);//释放一幅图像

           IpIImage*img2;

    Img2=cvCloneImage(img 1);

    读入图像文件,先进行图像反转,然后将图像显示在屏幕上。

    #include <stdlib.h>

    #include <stdio.h>

    #include <math.h>

    #include <cv.h>

    #include <highgui.h>

    int main(int argc, char *argv[])

    {

        IplImage*img = 0;

        int height, width,step, channels;

        uchar *data;

        int i, j, k;

        if (argc < 2)

        {

            printf("UsageInvImage<image-file-name>\n\7");

            exit(0);

        }

        img= cvLoadImage(argv[1]);

        if (!img)

        {

            printf("Could not load image file:%s\n", argv[1]);

            exit(0);

        }

         height= img->height;

        width= img->width;

        step= img->widthStep;

        channels= img->nChannels;

        data= (uchar*)img->imageData;

        printf("Processing a%dx%d image with %d channels\n", height, width, channels);

        cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);

        cvMoveWindow("mainWin", 100,100);

        for (i = 0; i <height; i++) for (j = 0;j < width; j++)  for (k = 0; k <channels; k++);

        data[i*step+ j*channels + k] = 255 - data[i*step + channels + k];

        cvShowImage("mainWin", img);

        cvWaitKey(30);

        cvReleaseImage(&img);

        return 0;

     

    }

    从文件中读取图像

    IplImage*img=0;

    Img=cvLoadImage(filename);

    If(!img)printf(“could not load image file:%s\n”,filename);

     

    调整默认设置(3-通道)

    Img=cvLoadImage,(filename,flag);>0(3通道)=0(单通道灰度图像)<0(图像的通道数决定);

    向文件写图像:

    If(!cvSeveImage(outFileName,img))

      Printf(“Couldnot save:%s\n”,outFilename);

    图片格式转换:

    #include<cv.h>

    #include<highgui.h>

    #include<stdio.h>

    int main(int argc, char**argv)

    {

        IplImage *src;

        if (argc != 3)

        {

            printf("CONV:Image format convertion,supportJPG,BMP,TIE,PNG,PPM\n");

            printf("Usage:conv srcImage dstImage\n");

            return 0;

        }

        if (strstr(argv[1],".jpg")==NULL

            &&strstr(argv[1], ".bmp") == NULL

            &&strstr(argv[1], ".tif") == NULL

            &&strstr(argv[1], ".png") == NULL

            &&strstr(argv[1], ".ppm") == NULL)

            ||(strstr(argv[2], ".jpg") == NULL

                 &&strstr(argv[2],".bmp") == NULL

                 &&strstr(argv[2],".tif") == NULL

                 &&strstr(argv[2],".png") == NULL

                 &&strstr(argv[2],".ppm") == NULL

                 ))

        {

            printf("WARNING:CONV only suportJPG,BMP,TIF.PPM.TAG,andPPM\n");

        }

        else

        {

            if ((src =cvLoadImage(argv[1],-1)) != 0){

                 cvSaveImage(argv[2], src);

                 cvReleaseImage(&src);

                 printf("\n Convert succeesfully.\n");

            }

            else {

                 printf("\n*** Read or write image Fils***\n");

            }

        }

        return 0;

    }

     

     

    访问图片元素

      间接访问:

     IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);

    CVScalar s;

    S=cvGet2D(img,ij);

    Printf(intensity=%f\n,s.val[0]);

    s.val{0}=111;

    cvSet2D(img,ij,s);

     

    间接访问:

    ((uchar*(img->imageData+i*img->widthStep)[j]=111;

    多通道

    ((uchar*(img->imageData+i*img->widthstep)[j*img->nChannels+0]=111;BGR

    ((uchar*(img->imageData+i*img->widthstep)[j*img->nChannels+1]=112;

    ((uchar*(img->imageData+i*img->widthstep)[j*img->nChannels+2]=113;

    多通道浮点数用float*

    指针直接访问;

    Int height =img->height;

    Int width=->img->width;

    Int step=->img->widthStep/sizeof(unchar);

    Uchar*data (uchar*)img->imageData;

    Data[i*step+j]=111;

    多通道   int channels= img ->nChannels;

    Data[i*step+j*channels+k]=111;

    将灰度图像转换成彩色图像

    CvConvertImage(src,dst,flags=0);

      浮点(单字节灰度(彩色)图像);

      Flags    CV_CVTIMG_FLIP.垂直翻转    CV_CVTIMG_SWAP_RB    交换RB通道。。

    彩色转换为灰色

      CvCvtColor(cimg,gimg.CV_BGR2GRAY);

     

     

    画矩形

        cvRectangle(img,cvPoint(100,100),cvPoint(200,200),CVScalar(255,0,0),1);

    画圆形

         CvCircle(img,cvPoint(100,100),20,cvScalar(0,255,0),1);

    画线段

         cvLine(img,cvPoint(100100) ,cvPoint(200,200),CVScalar(255,0,0),1);

    画多边形

     

     

     

    视屏的使用和操作

    一.捕获某一帧

    IpImage*img =0;

    If(cvGrabFrame(capture)){

      Printf(“Could notgrab a frame\n\7”);

    Exit(0);

    }

    保存视屏文件

          初始化视频写入

    对视屏写入并初始化

       CvvideoWriter*writer=0;

      Int isColor=1;

    Int fps=25;

    Int frameW=640;

    Int frameH=480;

    Writer=cvCreateVideoWriter(“out”)

    CvtSeqToArray

    CvMemStorage *stor;

    CvSeq*cont;

    CvPoint *PointArray;

    CvPoint2D32f*PointArray2D32f;

    Float temp;

    Stor=cvCreateMemStorage(0);

    Cont=cvCreateSeq(CV_SEQ_ELTYPE_POINT,sizeof(CvSeq),sizeof(CvPoint),stor);

     

    CvFlushSeq Writer

    展开全文
  • OpenCV学习心得

    千次阅读 2013-01-31 13:04:50
    时间还是过得那么的快,让我有点措手不及,距离第一次写博客差不多已经过去半个月了,这半个月来总是在学习研究OpenCV方面的知识,让我感受颇深。转载了N篇技术博客,始终不敢自己写一篇属于自己的文章,我在担心...
           时间还是过得那么的快,让我有点措手不及,距离第一次写博客差不多已经过去半个月了,这半个月来总是在学习研究OpenCV方面的知识,让我感受颇深。转载了N篇技术博客,始终不敢自己写一篇属于自己的文章,我在担心自己会不会误人子弟,所以每当自己在网络资源上找到一些解决方法的时候,总是在转载,尽管有些是通过自己的后期努力才完美解决的,但是我仅仅是在转载的时候加上注意事项,并没有写专门的一篇博客,好吧,可能是我没有自信吧。
           过去的半个月,关于OpenCV的知识学的不少。让我知道了Android上对OpenCV的运用,尽管我还是入门,但是至少我知道了OpenCV在Android上的运用主要有3种,可能我的理解有出入吧,我理解是3种,我使用的是OpenCV 2.4.3。第一种是使用OpenCV Java API,即导入OpenCV for Android SDK上的OpenCV Library包,然后使用,比如OpenCV Sample -15 puzzle例子的使用;第二种是利用JNI编写C++ OpenCV代码,通过Android NDK创建动态库(.so),静态库(.so)文件,比如http://blog.csdn.net/xuyue995277/article/details/8533742中的HaveImgFun例子;还有一种就是混合使用上面的两种方法,比如OpenCV Tutorial 4 -Mix Java + Native OpenCV例子。当然,除了第一种方法不需要编译文件之外,另外两种方法还是需要编译jni文件的,这就涉及到了Makefile文件,该文件和相对应的cpp文件都在Android工程下的JNI文件夹里,文件主要有Android.mk和Application.mk。用第一种方法运行程序的时候还需要到网络上得到OpenCVManager.apk安装中之后才能运行,不然程序不会跑的哦;需要编译JNI文件的前提是要配置好环境,我在我的博客里有转载,方法1中的博客链接里有说明怎么配置环境,用JNI编译的据说在后面开发的时候比较方便,只是还是需要些cpp文件啥的,我暂时还不懂,希望朋友问给我一些指导,哈哈。当然,可能还会遇到一些问题,也都是靠通过网络资源解决的,我就把收集到的资源都转载在博客里了,希望大家看到有用。
          还有一个遇到的问题,是我自己总结的,我在这里说明一下哦,嘿嘿。OpenCV编译比如OpenCV Tutorial 4-Mix Java + Native OpenCV的时候遇到ndk-build.cmd找不到,那么在环境变量里新建一个NDKROOT,把android-ndk的路径加进去重新编译即可。这个方法适用在opencv jni编译出错的时候。错误提示:Error: Cannot run program "ndk-build": Launching failed ,运用刚才的解决方法,基本问题得以解决,对于opencv的samples的运行基本没问题。
          半个月的学习可能效率不是很高,对于OpenCV的深入理解我还是处于探索阶段,最近的半个月更多的是去理解,去实践sdk中给的那些sample,我还没有真正写过属于自己的一个OpenCV的程序,我想,等我继续学习之后我应该会有这个能力的,我很期待那一天的到来。
          因为还是一位实习生,在这周结束之后就回家过年了,可能要中断目前这种高强度的学习状态,好吧,趁此机会好好休息休息,来年有个更好的精神,更好的精力,更好的状态面对更好的人生。提前祝各位博友新年快乐啊!
    展开全文
  • OPENCV学习心得

    2013-06-18 20:42:39
    1,使用C语言的字符数组时,表示反斜杠\是”\\”,要两个反斜杠。如char tt[] = "D:\\电影\\新东方老师力荐的25部练口语的电影\\落跑新娘\\2.avi"; 2,cvRect(x, y,width, height)创造的矩阵,是由点(x,y)往右下角...

    1,使用C语言的字符数组时,表示反斜杠\是”\\”,要两个反斜杠。如char tt[] = "D:\\电影\\新东方老师力荐的25部练口语的电影\\落跑新娘\\2.avi";

    2,cvRect(x, y,width, height)创造的矩阵,是由点(x,y)往右下角扩展的。左上角的坐标是(0,0)

    3,调用cvLoadImage时,其路径参数如char path1[ ] ="C:\\Users\\Administrator\\Desktop\\rainer.jpg"; 双引号内千万不可多空格之类的东西,否则出错,不能load图片。

    4,cvShowImage不能show出32位的,8位的可以。

    5,cvConvert()的两个参数的图片大小必须一致。

    展开全文
  • OpenCV学习心得——基础篇——OpenCV中的函数子 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu16.04(在这里博主在Linux下...

    OpenCV学习心得——基础篇——OpenCV中的函数子
    FOR THE SIGMA
    FOR THE GTINDER
    FOR THE ROBOMASTER

    简介:

    这一系列的学习心得第一轮将参考《学习OpenCV3》一书

    操作系统版本:Ubuntu16.04(在这里博主在Linux下进行运行的)
    http://www.ubuntu.org.cn/download/desktop 桌面版ubuntu16.04 下载

    电子版书籍下载地址
    暂无资源

    参考:https://blog.csdn.net/godadream/article/details/81841419

    内容:

    随着OpenCV的发展,封装了越来越多的功能,而往往这些功能不是一个函数就能完成的,实现为一组函数又会导致整个库的函数变得杂乱无章,因此常常使用一个新的对象类型来实现这个新功能。通过重载operator()来生成对象或函数子。下面主要讲述了三个新类型cv::PCA、cv::SVD和cv::RNG

    cv::PCA——主成分分析

    函数 说明
    cv::PCA::PCA() 默认的构造函数,简单的创建PCA对象并初始化空结构
    cv::PCA::operator() 生成PCA对象内部分布的模型
    cv::PCA::project() 将向量投影到主分量子空间
    cv::PCA::backProject() 根据PC投影重建向量

    主成分分析是一种降维的方法,主要是通过分析多维分布从中提取出带有最多信息量的维度子集的方法,这样,在不损失太多精度的前提下,可以扔掉较少信息的维度。
    参考:
    https://blog.csdn.net/qq_25680531/article/details/81453687 主成分分析(PCA)详细讲解
    https://blog.csdn.net/a8039974/article/details/81285238 PCA(主成分分析)详解(写给初学者)

    cv::PCA::PCA( )
    	PCA::PCA( 
    		cv::InputArray data,  //一个包含所有构成样本分布的矩阵,n采样,D维
    		cv::InputArray mean,  //包含每一维的平均值的矩阵
    		int	flags,	          //向量是“数据”的行或列
    		int	maxComponents = 0 //最大保留的成分(维度)数,默认情况下都保留
    		);
    
    PCA::operator( )(
    	cv::InputArray data,  
    	cv::InputArray mean,
    	int flags,
    	int maxComponents = 0
    	);
    

    为PCA重载的operator( ) 生成PCA对象内部分布的模型。
    cv::PCA_DATA_AS_ROW:data是n×D,mean是n×1
    cv::PCA_DATA_AS_COL:data是D×n,mean是1×n

    cv::Mat PCA::project(  //将向量投影到主分量子空间
    	cv::InputArray vec
    	) const;
    	
    void PCA::Project(
    	cv::InputArray vec
    	cv::OutputArray reult
    	) const;
    
    cv::Mat PCA::backProject(  //返回结果,作为二维矩阵
    	cv::InputArray vec	//包含来自映射后空间的输入向量
    ) const;
    
    void PCA::backproject(
    	cv::InputArray vec
    	cv::OutputArray result  //全尺寸“重构”矢量
    ) const;
    

    cv::SVD——奇异值分解

    函数 说明
    cv::SVD::SVD() 默认的构造函数,简单的创建SVD对象并初始化空结构
    cv::SVD::operator() 将需要分解的矩阵传递给cv::SVD对象,矩阵A将被分为U、W和V的转置(j即Vt)
    cv::SVD::compute() 矩阵A将被分为U、W和Vt,并将结果存放在用户提供的矩阵里。
    cv::SVD::solveZ() 给定一个欠定的(奇异)线性系统,该函数将会尝试找出一个单位长度的解,然后放在矩阵z中。若没有找到,则返回值将是使得值最小的向量。
    cv::SVD::backSubst() 执行奇异值反向替换。

    其本质上是解决非方阵、病态的(不适定的)或不良矩阵的工具。
    参考:
    https://blog.csdn.net/u013108511/article/details/79016939 奇异值分解(SVD)原理
    https://blog.csdn.net/lalaxumelala/article/details/83033379 SVD——奇异值分解概述

    SVD::SVD();
    SVD::SVD(
    	cv::InputArray A,
    	int	flags = 0
    	);
    
    SVD::& SVD::operator( ) (
    	cv::InputArray A,
    	int	flags = 0
    	);
    
    void SVD::compute(
    	cv::InputArray A,
    	cv::OutputArray W,
    	cv:OutputArray U,
    	cv::OutputArray Vt,
    	int	flags = 0
    	);
    
    void SVD::solveZ(
    	cv::InputArray A,
    	cv::OutputArray z
    	);
    
    void SVD::backSubst(
    	cv::InputArray b,
    	cv::OutputArray x
    	);
    void SVD::backSubst(
    	cv::InputArray W,
    	cv::InputArray U,
    	cv::InputArray Vt,
    	cv::InputArray b,
    	cv::OutputArray x,
    	);
    

    cv::RNG——随机数发生器

    函数 说明
    cv::theRNG() 为调用它的线程返回一个默认的随机数生成器
    cv::RNG() 使用默认的构造函数来创建一个RNG对象,或者传递一个64位的无符号整型数,这个数将用来作为随机数序列的种子
    cv::RNG::operator T() 重载类型转换操作符,可以把RNG对象转换成任何想要的类型。
    cv::RNG::operator() 返回一个从[0, UINT_MAX)均匀采样的随机整数/返回一个从[0, N)均匀采样的随机整数
    cv::RNG::uniform() 在[a, b)的范围内产生平均分布(使用MWC算法)的随机数
    cv::RNG::gaussian() 返回从高斯分布中取样的下一个随机数
    cv::RNG::fill() 使用特定分布随机数填充一个至多4个通道的输入矩阵

    随机对象RNG用来产生随机数的伪随机序列。一旦随机数发生器创建,就会开始按需提供产生随机数的“服务”,无论是平均分布(Multiply with Carry,MWC算法)还是正态分布(Ziggurate算法)。

    cv::RNG& theRNG(void);
    

    一般用于一个数或者是初始化一个数组

    cv::RNG::RNG(void);
    cv::RNG::RNG(uint64 state);
    

    cv::RNG::operator T()

    cv::RNG::operator uchar()
    cv::RNG::operator schar()
    cv::RNG::operator ushort()
    cv::RNG::operator short int()
    cv::RNG::operator int()
    cv::RNG::operator unsigned()
    cv::RNG::operator float()
    cv::RNG::operator double()
    

    cv::RNG::operator( )

    unsigned int cv::RNG::operator()();              //返回一个从[0, UINT_MAX)均匀采样的随机整数
    unsigned int cv::RNG::operator()(ubsigned int N); //返回一个从[0, N)均匀采样的随机整数
    

    cv::RNG::uniform( )

    int	cv::RNG::uniform( int a, int b);
    float cv::RNG::uniform(float a,float b);
    double cv::RNG::uniform(double a, double b);
    

    cv::RNG::gaussian( )

    double cv::RNG::gaussian( double sigma);  //高斯数,零均值
    cv::RNG::fill( )
    void cv::RNG::fill(
    	InputOutputArray mat,  //输入数组,值将被覆盖
    	int	distType,          //分布类型(高斯分布或均匀分布)
    	InputArray	a,         //最小(均匀)或平均(高斯)
    	InputArray	b          //最大(均匀)或标准偏差(高斯)
    	);
    

    cv::RNG::fill()

    void cv::RNG::fill(
    	InputOutputArray mat,       //输入矩阵
    	int distType, 	            //指定分布类型。cv::RNG::UNIFORM或cv::RNG::NORMAL
    	InputArray a,               //均分布是指下限(含),正态分布指均值
    	InputArray b,               //均分布是指上限(不含),正态分布指标准差
    	bool saturateRange=false    //是否先饱和处理,true:range[saturate(a), saturate(b)),false:saturate(range[a, b))
    	);
    
    展开全文
  • OpenCV学习心得——基础篇——绘图与注释 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu16.04(在这里博主在Linux下...
  • opencv学习心得——基础篇——了解OpenCV数据类型——基本数据类型与详解 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu16.04...
  • OpenCV学习心得——python版——ROI和泛洪填充 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 本笔记仅供参考 操作系统版本:Windows10 编译器:JetBrains PyCharm 2019.1.3 x64 所需库: opencv-python...
  • OpenCV学习心得——基础篇——了解OpenCV数据类型——辅助对象、工具函数与模板结构 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:...
  • OpenCV学习心得——基础篇——图像、视频与 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu16.04(在这里博主在Linux下...
  • OpenCV学习心得——基础篇——滤波与卷积——阈值化 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu16.04(在这里博主在...
  • OpenCV学习心得——python版——像素运算与图像常见的几何变换 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 本笔记仅供参考 操作系统版本:Windows10 编译器:JetBrains PyCharm 2019.1.3 x64 所需库...
  • 首先确定选区区域,这里利用鼠标选取区域具体操作看opencv学习心得(一)。 下面就是从感兴趣区域选取图像。 第一:创建图像空间,大小与rect相同。 第二:利用setroi选取区域。 第三:一定要复制图像。 之后...
  • OpenCV学习心得——python版——图像模糊(图像平滑)之高斯模糊 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 本笔记仅供参考 操作系统版本:Windows10 编译器:JetBrains PyCharm 2019.1.3 x64 所需库...
  • OpenCV学习心得——基础篇——滤波与卷积——图像形态学与核的卷积 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu16.04(在...
  • OpenCV学习心得——python版——图像的载入、显示、保存与色彩空间 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 本笔记仅供参考 操作系统版本:Windows10 编译器:JetBrains PyCharm 2019.1.3 x64 所...
  • OpenCV学习心得——基础篇——跨平台与Windows系统——基于Qt后端的HighGUI接口 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:...
  • OpenCV学习心得——基础篇——三种常见色彩空间——RGB、GRAY、HSV颜色识别 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu...
  • OpenCV学习心得——python版——图像二值化(图像阈值)——全局阈值与自适应阈值 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 本笔记仅供参考 操作系统版本:Windows10 编译器:JetBrains PyCharm ...
  • 新手,因课程及职业发展规划需要,学习opencv并记录心得以便日后回顾。 系统mac Os X,版本10.14;Xcode版本10.0 opencv版本3.4.1   二:安装opencv 下载opencv源码,(笔者是个追求完美的人,有新版不爱用旧版...
  • OpenCV学习心得——基础篇——图像与大型数组类型——cv::Mat类与数组与矩阵 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu...
  • OpenCV学习心得——基础篇——跨平台与Windows系统 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 这一系列的学习心得第一轮将参考《学习OpenCV3》一书 操作系统版本:Ubuntu16.04(在这里博主在...
  • 暑假完成了opencv的初步学习,现将这一阶段的学习过程做一下总结。  首先是opencv的配置,按照网上的方法设置。我用的是opencv2.4.4,不用cmake。根据我的经验提醒大家几点:  1.把opencv下载完后,先在“我的电脑...
  • c++和opencv学习心得

    2011-03-10 21:44:00
    1.表达式a^2中,a必须为int型的,而pow(a,2)中a可以是float型的; 2.sqrt(b),b在c++下为float或double long型,在c下一般为double型; (msdn: C++ allows overloading, so users can call...
  • 明天再写,都尼玛两点了,睡觉保头发。 嘤嘤嘤。 ----------------------------------------------------- 待续。 ...----------------- ...对图像建模,Fi(Xi,Yi)表示坐标→Ci(Ri,Gi,Bi)表示对应坐标的颜色,这样...
  • opencv设置好后,进行了第一个程序,读取图片,代码如下: #include
  • 学习opencv打开摄像头,代码如下:  提醒:1.标点是在半字符下写的,我以下的程序为了方便没进行区分,大家要注意;  2.我的代码是凭记忆写的,没用vs2010运行,可能会有错误,如果发现请指出。 #include #...
  • 最近在研究opencv2.3.1版本函数,因为函数结构使用C++类型的,所以在一些函数调用上有很多差别,但是在运行速度上提高不少,所以还是新版本好用。其实在新版本发布是,会有相关的使用手册,很多例子会在其中找到。这...
  • 大多数OpenCV函数都支持ROI,并将它作为一个独立 图像 进行处理,所有像素坐标都是从ROI的左上角或者左下角(基于图像结构)开始计算的。 未完待续: 转载于:...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 245
精华内容 98
热门标签
关键字:

opencv学习心得