最近两天正在学习OpenCV程序设计。因为在我考虑的双目立体视觉系统,设计采用VC++实现,为了应用大量的图像处理函数,使得程序能够快捷高速的实现需要的运算,并且能将我之前作的Matlab算法方便的转化为C++程序。
其实OpenCV早有耳闻,但是一直没有系统学习,现在沉下心认真学习,希望能够以应用为目的快速掌握。
下面列出我编的第一个可以运行的OpenCV程序(借鉴了中科院自动化所于仕琪的程序)。
#include "cv.h"#include "highgui.h"#include "stdio.h"
int main(int argc, char ** argv){ IplImage * pImg = NULL; IplImage * pCannyImg = NULL;
IplImage *pImgSobel = NULL;
if ((pImg = cvLoadImage("C://Baboon.jpg",0))!= 0) { IplImage * pImg2 = cvCreateImage(cvGetSize(pImg), pImg->depth, pImg->nChannels);
pImg2 = cvCloneImage(pImg);
pCannyImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U,1);
pImgSobel = cvCreateImage(cvSize(512,512),IPL_DEPTH_8U,1); cvSobel( pImg, pImgSobel, 2, 2, 3);
cvCanny(pImg, pCannyImg, 50, 150, 3);
cvSaveImage("C://test2.bmp",pImgUp);
cvNamedWindow("Image",1); cvShowImage("Image",pImg);
cvNamedWindow("Image1",1); cvShowImage("Image1",pCannyImg);
cvNamedWindow("Image2",1); cvShowImage("Image2",pImgSobel);
cvWaitKey(0);
cvDestroyWindow("Image"); cvReleaseImage(&pImg);
cvDestroyWindow("Image1"); cvReleaseImage(&pCannyImg);
cvDestroyWindow("Image2"); cvReleaseImage(&pImgSobel); return 0; } return -1;}
总结:以上代码实现了图像打开,图像存储,Canny边缘检测,Sobel算子检测,图像显示。