热度 23
2013-8-27 14:20
4261 次阅读|
0 个评论
二、代码 #include "stdafx.h" #include #include #include "cv.h" //opencv头文件 //以下三行在vc6中不用写上,但在vc10中须添加,原因是matlab和vc10都 //对CHAR16T进行了定义,所以解决方法是在调用matlab头文件之前, //先加上这三行,不然会产生重定义错误 #ifdef _CHAR16T #define CHAR16_T #endif #include "mat.h" #include "matrix.h" #include "highgui.h" int _tmain( int argc, _TCHAR* argv =D ; D_uchar = ( unsigned char *)malloc((m-5)*n* sizeof ( unsigned char )); //分·?配?内ú存′? memset(D_uchar,0,(m-5)*n* sizeof ( unsigned char )); //初3?始ê?化ˉ // double minval; // double maxval; // CvPoint minlocation; // CvPoint maxlocation; // cvMinMaxLoc(a,minval,maxval,minlocation,maxlocation); // printf("minval=lf%,maxval=lf%",minval,maxval); // double scale=255/(maxval-minval); // double shift=-minval*scale; // cvConvertScale(a,a_8u,scale,shift);//归一化处理 // // scaleImage(a,a_out,0.0,1.0,m,n,1); IplImage*img=cvCreateImage(cvSize(120,160),IPL_DEPTH_8U,1); // IplImage*img1=cvCreateImage(cvSize(120,160),IPL_DEPTH_8U,3); int step = img-widthStep / sizeof ( unsigned char ); unsigned char * imgPtr = ( unsigned char *) img-imageData; //这里使用了一种比较简单,粗鲁的办法来把距离信息转变成亮度,距离大于1m,亮度为0 for ( int num=0;num160*120;num++) { if (D_z 1.0f) D_uchar =0; else D_uchar =255-( unsigned char ) (D_z * 255.0f); } for ( int j1=0;j1160;j1++) { for ( int i1=0;i1120;i1++) (( unsigned char *) img-imageData) =D_uchar ; //iplimage中的数据只能是uchar类型的,所以要进行类型转换 } /* for(int j2=0;j25;j2++) { printf("\n"); for(int i2=0;i2120;i2++) printf("%8d",((unsigned char*)img-imageData) ); }*/ // cvCvtColor(img,img1,CV_GRAY2BGR); cvNamedWindow( "Image" , 1 ); //创建窗口 cvShowImage( "Image" , img ); //显示图像 //cvNamedWindow( "Image1", 1 );//创建窗口 //cvShowImage( "Image1", img1 );//显示图像 cvWaitKey(0); //等待按键 cvDestroyWindow( "Image" ); //销毁窗口 cvReleaseImage( img ); //释放图像 matClose(pmat); mxFree(pa); mxFree(pmat); free(D); return 0; } 运行结果: