最近两天正在学习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算子检测,图像显示。