`

OpenCV基本函数学习

 
阅读更多

OpenCV开发包提供了许多功能,诸如读取各种类型的图像文件、视频内容以及摄像机输入的功能,这些功能是OpenCV开发包所包含的HighGUI工具集的一部分,为使用这些功能,首先要了解一些简单的程序所使用的函数及其功能。

 

1.显示图像

以最简单的显示图像程序为例,可以认识几个基础的函数及其作用。
cvNamedWindow()是一个高层调用接口,用于在屏幕上创建一个窗口,函数中的第一个参数指定了该窗口的窗口标题,若需要使用其他函数与该窗口进行交互时,即使用该参数值引用这个窗口。函数中的第二个参数定义了窗口的属性,该参数可以被设置为0(默认值)或CV_WINDOW_AUTOSIZE。设置为0时,窗口的大小不会因加载的图像或视频的大小而改变,图像与视频只能在窗口中根据窗口的大小进行拉伸或缩放;而设置为CV_WINDOW_AUTOSIZE时,窗口会根据图像视频的实际大小自动进行拉伸或缩放以进行容纳。。
cvLoadImage()函数也是一个高层调用接口,它通过文件名确定被加载文件的格式,并且该函数将自动分配图像数据结构所需的内存。
cvShowImage()函数可以用来显示图像,其第一个参数被设置来确定在哪个已经存在的窗口中显示图像,前提是有一个与某个图像文件相对应的IplImage*类型的指针。
cvWaitKey()函数的功能是使程序暂停,等待用户触发一个按键操作。如果将该函数参数设为一个正数,则程序将暂停一段时间,时间长度为该整数值个毫秒单位,然后继续执行程序,即使用户没有按下任何按键。当设置该函数参数为0或者负数时,程序将一直等待用户触发按键操作。
cvReleaseImage()函数在用完加载到内存的文件后可以用来释放为文件分配的内存,在对cvReleaseImage()函数的调用执行完毕后,img指针将被设置为空。
cvDestoryWindow()函数用来关闭窗口,同时释放为该窗口所分配的所有内存。

#include"highgui.h"

int main( int argc, char**argv )
{
  IplImage* img = cvLoadImage( argv[1] );
  cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE );
  cvShowImage("Example1", img );
  cvWaitKey(0);
  cvReleaseImage( &img );
  cvDestroyWindow("Example1");
}

 

2.播放AVI视频

通过播放AVI视频的程序,来学习以下两个函数的功能。
cvCreateFileCapture()通过参数设置确定要读入的AVI文件,返回一个指向CvCapture结构的指针,其中包含状态信息。在调用这个函数之后,返回指针所指向的CvCapture结构被初始化到所对应AVI文件的开头。
cvQueryFrame()函数的参数为CvCapture结构的指针,用来将下一帧视频文件载入内存(实际是填充或更新CvCapture结构中),返回一个对应当前帧的指针。与cvLoadImage()不同的是,cvLoadImage为图像分配内存空间,而cvQueryFrame使用已经在cvCapture结构中分配好的内存。这样,就不需要cvReleaseImage()对这个返回的图像指针进行释放,当CvCapture结构被释放后,每一帧图像所对应的内存空间即会被释放。

#include"highgui.h"

int main( int argc, char**argv ) { 
    cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE);
    //CvCapture* capture = cvCaptureFromAVI(argv[1] ); // either one will work
    CvCapture* capture = cvCreateFileCapture(argv[1] );
    IplImage* frame;
    while(1) {
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "Example2",frame );
        char c = cvWaitKey(33);
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "Example2" );
}

 

 

3.从摄像机读入数据

为了实现系统,第一步就是要从摄像头读入数据。OpenCV中的HighGUI模块为我们提供了一种简单的方式来处理这种情况,类似于读取AVI文件,循环的顺序的读出视频中的每一帧,不同的是,我们调用的是cvCreateCameraCapture()来代替cvCreateFileCapture(),后面一个函数参数为摄像设备的ID而不是AVI文件的名称,在存在多个摄像设备时这个参数才起作用,其默认值为-1,代表“随机选择一个”,更适合当有且仅有一个摄像设备的情况。cvCreateCameraCapture()同样返回相同的CvCapture*指针,这使得我们可以使用完全类似于从视频流中获取帧的方法。

#include"stdafx.h"
#include<opencv2/opencv.hpp>

int main(int argc, char*argv[])
{
cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE);
CvCapture *capture=cvCreateCameraCapture(0);
IplImage *frame;
while(1){
       frame=cvQueryFrame(capture);
       if(!frame) break;
       cvShowImage("Example2",frame);
       char c=cvWaitKey(33);
       if(c==27) break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("Example2");
       return 0;
}

 

4.几个基本函数

cvCopy()用于将一个图像复制到另一个图像,这个函数要求两个数组具有相同的数据类型、相同的大小和相同的维数,可以用来复制稀疏矩阵,但这样做时,不支持mask,对于非稀疏矩阵和图像,mask如果为空,则只对与mask中与非0值相对应的dst中的像素赋值。
cvCvtColor()当数据类型一致时,它将图像从一个颜色空间(通道的数值)转换到另一个,具体的转换操作由参数code来指定,如CV_RGB2GRAY就是转换RGB或BGR色彩空间为灰度空间。
cvGetSize()是专门为矩阵和图像设计的,这两种对象的维数总是2.其尺寸可以一CvSize结构的形式返回,例如当创建一个新的大小相同的矩阵或图像时,使用此函数就很方便。
cvSet()和cvSetZero()能将数组的所有通道的所有值设置为指定的参数value。该cvSet()函数接受一个可选的参数:如果提供参数,那么只有那些与参数mask中非0值对应的像素将被设置为指定的值。函数cvSetZero()仅仅是cvSet(0.0)别名。
cvLine()是绘图函数中最简单的。属性分别为图像、线段的第一个端点、线段的第二个端点、线段的颜色、线段的粗细程度、线段的类型。
cvPutText()是OpenCV中一个主要的函数,可以在图像上输出一些文字。参数img表示图像,text所指向的文字将打印到图像上。origin指定文本框左下角的坐标,font表示字体结构体,color表示文本的字体颜色。
为了降低输出文字工作的复杂度,我们需要使用CvFont指针。简单来说,获取CvFont*指针的方式就是调用cvInitFont()。该函数采用一组参数配置一些用于屏幕输出的基本个特定字体。为了建立一个可以传值给cvPutText()的CvFont,首先必须声明一个CvFont变量,然后把它传递给cvInitFont()。调用cvInitFont()时,初始化一个已经准备好的CvFont结构(这意味着你创建了一个变量,并传给cvInitFont()函数一个指向新建的变量指针),而不是像cvCreateImage()那样创建一个结构并返回指针。

分享到:
评论

相关推荐

    OPENCV函数手册_opencv_opencv函数手册_

    综上所述,“OPENCV函数手册”是学习和使用OpenCV的重要资源,它涵盖了OpenCV的主要功能和应用,对于想要进入或深入了解计算机视觉领域的开发者来说,是一份不可或缺的参考材料。通过系统学习和实践,可以逐步掌握...

    OPENCV函数手册(中文).zip

    这个压缩包“OPENCV函数手册(中文).zip”显然是为中文用户提供的OpenCV函数参考手册,帮助开发者更好地理解和使用OpenCV中的各种函数。 OpenCV库的核心功能主要分为以下几个方面: 1. 图像处理:包括读取、写入...

    OpenCV实现remap函数用法示例(C++实现).zip

    首先,`remap`函数的基本工作原理是通过一个映射矩阵来改变图像上每个像素的位置。映射矩阵通常由两部分组成:`map_x`和`map_y`,分别表示新位置的x坐标和y坐标。这两个矩阵可以是浮点型,允许进行亚像素级别的精确...

    学习OpenCV中文版

    书中会涵盖OpenCV的基本函数,以及如何在实际项目中应用这些函数。同时,书中的例子和练习将帮助读者巩固所学知识,提升解决实际问题的能力。 总的来说,OpenCV是一个强大且全面的库,不仅适用于学术研究,也是商业...

    Opencv常用函数及说明

    ### Opencv常用函数及说明 ...通过以上介绍,我们了解了OpenCV中的一些基本概念和常用函数,这对于初学者来说是非常重要的基础。接下来,可以通过实践更多的例子来深入学习和掌握OpenCV的高级功能和技术。

    OpenCV常用函数、数据类型查询.chm

    OpenCV的学习和应用不仅需要熟悉这些基本的函数和数据类型,还需要了解如何将它们组合成算法流程,例如,使用高斯滤波平滑图像,然后通过Canny边缘检测找出图像的边缘,再利用Hough变换找到边缘中的直线。...

    opencv2.4.3和4.0函数手册带目录可搜索

    手册中包含了OpenCV的基本模块,如图像处理(I/O、滤波、色彩转换等)、特征检测(SIFT、SURF、HOG等)、机器学习(支持向量机、随机森林等)以及视频分析等功能。每个函数通常会详细介绍其功能、参数、返回值及示例...

    OPENCV函数手册(带目录).rar_2CJ_opencv_opencv函数手册_opencv手册

    本书不仅详细阐述了每个函数的基本用法,还通过实例演示了如何在实际项目中应用这些函数,使读者能够更好地理解和掌握OpenCV。此外,书中可能还包括了对话框(dialogue)的设计,这可能是关于如何在图形用户界面...

    OpenCV_shouce.rar_opencv_opencv使用手册_opencv函数shouce_opencv函数手册_vi

    理解这些基本函数的使用,是构建图像处理程序的基础。 在OpenCV中,不仅有基础的图像读写和显示函数,还有丰富的图像处理和分析功能。例如,边缘检测(如Canny算法)、特征检测(如SIFT、SURF)、图像变换(如旋转...

    OpenCV2.4.3 使用手册及函数参考手册

    OpenCV(开源计算机视觉库)是计算机视觉领域中一个广泛使用的开源库,它提供了大量的函数和模块,用于图像处理、计算机视觉以及机器学习任务。OpenCV2.4.3是该库的一个较旧但仍然非常实用的版本。下面将详细讨论...

    OpenCV函数手册

    OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它由一系列的C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV函数手册是学习和使用OpenCV的...

    OPENCV函数手册PDF版,opencv函数大全,C/C++

    学习OpenCV函数手册,开发者不仅可以掌握基本的图像处理函数,如图像读取、显示、滤波、色彩空间转换等,还能深入了解高级功能,如特征检测、对象识别、跟踪、图像拼接、立体视觉等。同时,手册也会包含详细的示例...

    opencv库函数手册

    以上列出的函数和结构体是OpenCV库中用于图像处理和计算机视觉任务的基本工具。从图像的创建、修改到更复杂的算法,如DFT变换、矩阵运算、图像翻转和变换、像素操作,乃至更高级的计算机视觉算法如马氏距离、DCT变换...

    OpenCV详细的函数说明书

    OpenCV的基本数据结构主要包括图像数据结构、矩阵和向量以及其他辅助结构: - **图像数据结构**:如IPL图像和`cv::Mat`,用于存储和操作图像数据。 - **矩阵与向量**:矩阵类支持各种数学运算,如加、减、乘、除等。...

    opencv 函数介绍中文版+英文版

    这个资源包提供了OpenCV函数的中文和英文版本介绍,对于学习和使用OpenCV的人来说,是非常宝贵的参考资料。 首先,让我们了解一下OpenCV的基本概念。OpenCV最初由Intel公司开发,现在由它背后的非营利组织Itseez3D...

    opencv 函数应用例子以及保存图片例子

    总的来说,这个压缩包提供了一系列OpenCV函数应用的例子,包括图像读取、显示、保存以及基本的图像处理操作。学习和理解这些例子有助于深化对OpenCV的理解,提高处理图像问题的能力。开发者可以通过阅读和运行这些...

    OpenCV函数详解

    mmshow(const String& winname, InputArray mat)在OpenCV中,`imshow`函数用于在先前用`namedWindow`创建的窗口中显示图像。它接受两个参数:窗口的名字和要...了解并熟练掌握这些基本函数对于OpenCV的学习至关重要。

    图像处理和图像识别中常用的OpenCV函数(中文注释) 219个函数说明

    图像处理函数是 OpenCV 库中最基本的一部分,这些函数可以对图像进行各种处理操作,例如图像加载、显示、释放、平滑、降采样、边缘检测等。 1. cvLoadImage:将图像文件加载至内存。 2. cvNamedWindow:在屏幕上...

    OpenCV-python 学习笔记 Opencv图像基本操作1

    这篇学习笔记主要介绍了如何在Python环境中搭建OpenCV,以及如何进行基本的图像读取、显示、保存和一些基本操作。 首先,环境搭建是使用Python的包管理器pip来安装OpenCV,通过运行`pip install opencv-python`命令...

    Opencv基础学习资料集(含SDK中文参数手册)

    在学习OpenCV的过程中,理解图像处理的基本概念和算法是非常重要的,例如直方图均衡化、边缘检测(如Canny、Sobel、Laplacian)、特征检测(如SIFT、SURF、ORB)、物体识别(如Haar级联分类器)等。同时,掌握如何将...

Global site tag (gtag.js) - Google Analytics