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);
- OpenCV笔记
- openCV笔记
- OpenCV笔记
- OpenCV笔记
- opencv笔记
- Opencv笔记
- opencv 笔记
- opencv笔记
- opencv笔记
- opencv笔记
- OpenCV--笔记
- opencv笔记
- OpenCV笔记
- OpenCV笔记
- OpenCV笔记
- OpenCV学习笔记
- OpenCV 学习笔记
- 学习笔记-----opencv
- Jquery时间对象的格式化
- AS3多线程快速入门(一):Hello World[译]
- 国外经典网页设计:50个优秀的移动网站设计实例
- 如何在Django中接收JSON格式的数据。
- 详解C中volatile关键字
- OpenCV笔记
- Java String类型数据的字节长度
- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks
- Mac电脑与PC的九大区别
- 由于数据移动,未能继续以 NOLOCK 方式扫描
- AS3多线程快速入门(二):图像处理[译]
- 实现RCP自身的控制台
- [Hadoop源码解读](三)MapReduce篇之Job类
- Linux下的定时器用法