OpenCV笔记

来源:互联网 发布:it公司 知乎 编辑:程序博客网 时间:2024/05/20 05:29

OpenCV命名规则

(1)函数名:

cvActionTargetMod(...)

Action ==核心功能(e.g.set,create)

Target==目标图像区域(target image area)(e.g. contour,polygon)

Mod==(可选的)调整语(optional modifiers)(e.g.argument type)


(2)矩阵数据类型:

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

S==符号整型

U==无符号

F==浮点型

E.g. : CV_8UC1 一个8位无符号整型单通道矩阵

CV_32FC2一个32位浮点型双通道矩阵


(3)图像数据类型:

IPL_DEPTH_<bit_depth>(S|U|F)

E.g. : IPL_DEPTH_8U图像像素数据是8位无符号整型

IPL_DEPTH_32F图像像素数据是32位浮点型。

(4)头文件:

#include<cv.h>

#include<highgui.h>

#include<ml.h>

#include<cxcore.h>   //一般不需要,cv.h已包含

(5)OpenCV模块

  • cv – 核心函数库
  • cvaux – 辅助函数库
  • cxcore – 数据结构与线性代数库
  • highgui – GUI函数库
  • ml – 机器学习函数库


Windows visual 2010配置

转载这里www.opencv.org.cn/forum/viewtopic.php?f=1&t=15152(感谢作者无私奉献)

我把例子换成简介中的例子了~

//////////////////////////////////////////////////////////////////////////// hello-world.cpp//// 该程序从文件中读入一幅图像,将之反色,然后显示出来. //////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include <highgui.h>#include <stdlib.h>#include <stdio.h>#include <math.h>#include <cv.h>int _tmain(int argc, _TCHAR* argv[]){IplImage* img = 0; int height,width,step,channels;uchar *data;int i,j,k; // if(argc<2){// printf("Usage: main <image-file-name>\n\7");// exit(0);// } // load an image  img=cvLoadImage("94.jpg",1);if(!img){printf("Could not load image file: %s\n",argv[1]);exit(0);} // get the image dataheight    = 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); // create a windowcvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); cvMoveWindow("mainWin", 100, 100); // invert the image// 相当于 cvNot(img);// IplImage *pDstImg = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);// cvNot(img, pDstImg);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+j*channels+k]; // show the imagecvShowImage("mainWin", img ); // wait for a keycvWaitKey(0); // release the imagecvReleaseImage(&img );return 0;}
截图


GUI指令

 (1)创建和定位一个新窗口:

cvNamedWindow(WindowsName,CV_WINDOW_AUTOSIZE);

cvMoveWindow(WindowsName,100,100);

  (2)载入图像:

IplImage* img=0;

img=cvLoadImage(fileName,CV_LOAD_IMAGE_COLOR);

 (3)显示图像:

cvShowImage(WindowsName,img);

该函数可以在上面建立的窗口(win1)中显示彩色或灰度的字节型/浮点型图像。字节型图像像素值范围为[0-255];浮点型图像像素值范围为 [0-1]。彩色图像的三色元素按BGR(蓝-绿-红)顺序存储。

 (4)关闭窗口:

cvDestroyWindow(WindowsName);

 (5)改变窗口大小:

cvResizeWindow(WindowsName,width,heigh) //in pixels

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//OpenCV1.0大部分使用c写的,所以木有传说中的构造函数~0~

CvPoint 二维坐标系下的点,类型为整型

typedef struct CvPoint

{
    int x;
    int y;
}CvPoint;


inline CvPoint cvPoint(int x,int y);
inline CVPoint cvPointFrom32f(CvPoint2D32f point);


CvPoint2D32f // 二维坐标下浮点数点
typedef struct CvPoint2D32f
{
     float x;
     float y;
}CvPoint2D32f;


inline CvPoint2D32f cvPoint2D32f(double x,double y);
inline CvPoint2D32f cvPointTo32f(CvPoint point);


CvPoint3D32f//三维坐标下的点,类型为浮点
typedef struct CvPoint3D32f
{
    float x;
    float y;
    float z;
}CvPoint3D32f;
inline CvPoint3D32f cvPoint3D32f(double x,double y,double z);


CVSize //矩形大小,(像素)

typedef struct CvSize

{

int width;

int height;

}CvSize;

inline CvSize cvSize(int width,int height);






























原创粉丝点击