创建MFC工程,从文件中读入一幅图像,将之反色,然后显示原图片和反色之后的图片。
- /*******************************************************************************
- 函数名称 : MakeMat
- 函数描述 : 使用OpenCV进行图像操作
- 输入参数 : N/A
- 输出参数 : N/A
- 返 回值 : N/A
- 作 者 : hewenming 2012.11.14
- *******************************************************************************/
- void MakeMat()
- {
- IplImage* src = NULL;
- //加载图片至内存
- src = cvLoadImage("750x500_1126054.bmp");
- if (NULL == src)
- {
- AfxMessageBox(_T("图片加载失败!"));
- return;
- }
- //获取图片的一些属性
- int height = src->height; // 图像高度
- int width = src->width; // 图像宽度(像素为单位)
- int step = src->widthStep; // 相邻行的同列点之间的字节数
- int channels = src->nChannels; // 颜色通道数目 (1,2,3,4)
- uchar *data = (uchar *)src->imageData;
- //创建标题名为“美女”的对话框
- cvNamedWindow("美女");
- cvMoveWindow("美女", 600, 250);
- //创建名为“反色”的对话框
- cvNamedWindow("反色");
- cvShowImage("美女",src);
- //反色操作
- for(int i=0;i != height; ++ i)
- {
- for(int j=0;j != width; ++ j)
- {
- for(int k=0;k != channels; ++ k)
- {
- data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
- }
- }
- }
- //将图片显示到对话框中
- cvShowImage("反色",src);
- cvWaitKey(0);
- //释放内存与对话框销毁
- cvReleaseImage(&src);
- cvDestroyWindow("美女");
- cvDestroyWindow("反色");
- //退出
- exit(0);
- }
/*******************************************************************************
函数名称 : MakeMat
函数描述 : 使用OpenCV进行图像操作
输入参数 : N/A
输出参数 : N/A
返 回值 : N/A
作 者 : hewenming 2012.11.14
*******************************************************************************/
void MakeMat()
{
IplImage* src = NULL;
//加载图片至内存
src = cvLoadImage("750x500_1126054.bmp");
if (NULL == src)
{
AfxMessageBox(_T("图片加载失败!"));
return;
}
//获取图片的一些属性
int height = src->height; // 图像高度
int width = src->width; // 图像宽度(像素为单位)
int step = src->widthStep; // 相邻行的同列点之间的字节数
int channels = src->nChannels; // 颜色通道数目 (1,2,3,4)
uchar *data = (uchar *)src->imageData;
//创建标题名为“美女”的对话框
cvNamedWindow("美女");
cvMoveWindow("美女", 600, 250);
//创建名为“反色”的对话框
cvNamedWindow("反色");
cvShowImage("美女",src);
//反色操作
for(int i=0;i != height; ++ i)
{
for(int j=0;j != width; ++ j)
{
for(int k=0;k != channels; ++ k)
{
data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
}
}
}
//将图片显示到对话框中
cvShowImage("反色",src);
cvWaitKey(0);
//释放内存与对话框销毁
cvReleaseImage(&src);
cvDestroyWindow("美女");
cvDestroyWindow("反色");
//退出
exit(0);
}
如果想保存反色后的图像,添加以下代码即可:
- //保存反色后的图像
- cvSaveImage("反色.bmp",src);