Open CV Open CV Open CV Open Source

  • Slides: 27
Download presentation

Open. CV图像处理包简介 Open. CV 介绍 Open. CV = Open Source Computer Vision Library Open.

Open. CV图像处理包简介 Open. CV 介绍 Open. CV = Open Source Computer Vision Library Open. CV是跨平台的函数库,独立于操作系统/硬件/ 图形管理器, 支持Windows和Linux环境 Open. CV的开发目的是实时应用,代码效率高,运算 速度快 Open. CV为Integrated Performance Primitives (IPP) 提供了透明接口

Open. CV图像处理包简介 1. #include <cxcore. h> 2. #include <highgui. h> 例程1 3. #include <math.

Open. CV图像处理包简介 1. #include <cxcore. h> 2. #include <highgui. h> 例程1 3. #include <math. h> 4. int main( int argc, char** argv ) { 5. Cv. Point center; 6. double scale=-3; 7. Ipl. Image* image = argc==2 ? cv. Load. Image(argv[1]) : 0; 8. if(!image) return -1; 9. center = cv. Point(image->width/2, image->height/2); 10. for(int i=0; i<image->height; i++) 11. for(int j=0; j<image->width; j++) { Ipl. Image结构: int n. Channels: 1、2、3、4通道 depth:IPL_DEPTH_8 U, IPL_DEPTH_32 F int origin: 0 - 顶—左结构, 1 - 底—左结构 int width:图像宽像素数 int height:图像高像素数 int image. Size:图像数据大小 int width. Step:排列的图像行大小,以字节 为单位 char * image. Data:指向排列的图像数据 对一幅灰度图象,n. Channels为 1,对RGB 图像n. Channels为 3或者4;depth通常为 IPL_DEPTH_8 U,即 8位整型。 12. double dx=(double)(j-center. x)/center. x; 13. double dy=(double)(i-center. y)/center. y; 14. double weight=exp((dx*dx+dy*dy)*scale); 15. uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j*3); 16. ptr[0] = cv. Round(ptr[0]*weight); I(x, y)c ~ ((T*)(img->image. Data + img>width. Step*y))[x*N + c] 17. ptr[1] = cv. Round(ptr[1]*weight); Open. CV定义宏: 18. ptr[2] = cv. Round(ptr[2]*weight); } 19. cv. Save. Image( “copy. png”, image ); 20. cv. Named. Window( "test", 1 ); 21. cv. Show. Image( "test", image ); 22. cv. Wait. Key(); 23. cv. Release. Image(&image); 23. return 0; } I(x, y)c ~ CV_IMAGE_ELEM( img, T, y, x*N + c )

Open. CV图像处理包简介 利用Open. CV的Highgui访问图像、视频、摄像头,直接获取Open. CV格式 的图像数据,进行图像处理,最后转为位图在VC++程序中显示 利用Win. API或MFC访问图像、数据、摄像头,再将获取的数据转换为 Open. CV格式,用Open. CV进行图像处理,最后再将结果转换为位图在 VC++程序中显示 Open. CV

Open. CV图像处理包简介 利用Open. CV的Highgui访问图像、视频、摄像头,直接获取Open. CV格式 的图像数据,进行图像处理,最后转为位图在VC++程序中显示 利用Win. API或MFC访问图像、数据、摄像头,再将获取的数据转换为 Open. CV格式,用Open. CV进行图像处理,最后再将结果转换为位图在 VC++程序中显示 Open. CV -> Bitmap: 例程 // 利用Open. CV打开图像 image = cv. Load. Image("lena. bmp"); // 将Ipl. Image结构转换为位图 h. Bitmap = Ipl. Image 2 DIB(image); //显示 Bit. Blt (hdc, 0, 0, image->width, image>height, hdc. Mem, 0, 0, SRCCOPY) ; Open. CV与Windows位图 Bitmap->Open. CV 例程 // 打开位图 d. Bitmap. Dib. Load. Image(h. Wnd, true); // 将位图转为Ipl. Image结构 hdc = Get. DC(h. Wnd); h. Bmp. Api = d. Bitmap. Create. DDB(hdc); image. Api = h. Bitmap 2 Ipl(h. Bmp. Api); Release. DC(h. Wnd, hdc); // 显示 cv. Named. Window("Open. CV", 1); cv. Show. Image("Open. CV", image. Api);

Open. CV图像处理包简介 例程3 Cv. Capture* capture = 0; Ipl. Image * frame; capture =

Open. CV图像处理包简介 例程3 Cv. Capture* capture = 0; Ipl. Image * frame; capture = cv. Capture. From. CAM(1); cv. Named. Window( "Open. CV", 1 ); if(capture) { while(1) { if( !cv. Grab. Frame( capture )) break; frame = cv. Retrieve. Frame( capture ); if( !frame ) break; cv. Show. Image("Open. CV", frame); if( cv. Wait. Key( 5 ) >= 0 ) break; } cv. Release. Image( &frame ); cv. Release. Capture( &capture ); } cv. Destroy. Window("Open. CV");