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 data
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);
// create a window
cvNamedWindow("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 image
cvShowImage("mainWin", img );
// wait for a key
cvWaitKey(0);
// release the image
cvReleaseImage(&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);