#pragma comment(lib,"highgui.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"ml.lib")
#pragma comment(lib,"cvaux.lib")
#pragma comment(lib,"cvcam.lib")
#include "cv.h"
#include "highgui.h"
int main( int argc, char** argv )
{
IplImage* pImg; //声明IplImage指针
//载入图像,强制转化为Gray
if( argc == 2 && (pImg = cvLoadImage( argv[1], CV_LOAD_IMAGE_UNCHANGED)) != 0 )
{
//IplImage* pImg2 = cvCreateImage(cvGetSize(pImg), pImg->depth, pImg->nChannels);
//cvCopy(pImg, pImg2, NULL);
IplImage* pImg2 = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U, 1);
/*
CVAPI(void) cvConvertImage( const CvArr* src, CvArr* dst, int flags CV_DEFAULT(0));
cvConvertImage(src, dst, flags=0);
src = float/byte grayscale/color image
dst = byte grayscale/color image
flags = CV_CVTIMG_FLIP (垂直翻转图像)
CV_CVTIMG_SWAP_RB (置换 R 和 B 通道)
*/
//cvConvertImage(pImg, pImg2, CV_CVTIMG_FLIP);
//cvCvtColor(cimg,gimg,CV_BGR2GRAY); // cimg -> gimg
cvCvtColor(pImg,pImg2,CV_BGR2GRAY); //
//cvSaveImage(argv[2], pImg2); // 把图像写入文件
cvNamedWindow( "Image", 1 ); // 创建窗口
cvShowImage( "Image", pImg ); // 显示图像
cvWaitKey(0); // 等待按键
cvShowImage( "Image", pImg2 ); // 显示图像
cvWaitKey(0); // 等待按键
cvDestroyWindow( "Image" ); // 销毁窗口
cvReleaseImage( &pImg ); // 释放图像
cvReleaseImage( &pImg2 ); // 释放图像
return 0;
}
return -1;
}
(2) 彩色图像->灰度图像:
// Using the OpenCV conversion:
cvCvtColor(cimg,gimg,CV_BGR2GRAY); // cimg -> gimg
// Using a direct conversion:
for(i=0;i<cimg->height;i++) for(j=0;j<cimg->width;j++)
gimgA[i][j]= (uchar)(cimgA[i][j].b*0.114 +
cimgA[i][j].g*0.587 +
cimgA[i][j].r*0.299);