OpenCV 图像反转

/*程序名:invImage.c功能:读入图像文件,进行图像翻转并显示在屏幕上*/#include<stdlib.h>#include<stdio.h>#include<... /*
程序名: invImage.c
功 能: 读入图像文件,进行图像翻转并显示在屏幕上
*/

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include"cv.h"
#include"highgui.h"

int main(int argc,char *argv[])
{
IplImage *img=0;
int i,j,k;
uchar *data;
int height,width,step,channels;
if(argc<2)
{
printf("Usage:InvImage banboo.jpg \n\7");
exit(0);
}
//载入图像
img=cvLoadImage(argv[1],1);
if(!img)
{
printf("Could not load image file: %s\n",argv[1]);
exit(0);
}
//获取图像信息
height = img->height;
width = img->width;
step = img->widthStep/sizeof(uchar);
channels = img->nChannels;
data = (uchar *)img->imageData;
printf("Processing a %d×%d image with %d channels\n",height,width,channels);
//创建窗口
cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin",100,100);
//反转图像
for(i=0;i<height;i++)
for(j=0;j<width;j++)
for(k=0;k<channels;k++)
data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
//显示图像
cvShowImage("mainWin",img);
cvWaitKey(0);
cvReleaseImage(&img);
return 0;
}

初学OpenCV想请教几个问题:
1.开始的argc和*argv分别是什么东西?难道用指针数组argv指向图像?(为什么用数组)
2.那个uchar *data 是什么东西?
3.这个程序我怎么调试都实现不了图像反转,麻烦指出错误的地方。希望经验丰富的朋友帮帮忙,最好不要复制黏贴~谢谢:)
展开
 我来答
chensuchang
2011-07-14 · TA获得超过6399个赞
知道大有可为答主
回答量:6655
采纳率:50%
帮助的人:4891万
展开全部
1、argc和*argv是命令提示符下运行的参数,现在很少用了,一般用对话框
2、那个是像素的数据
3、这个程序实现的是反色而不是反转
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式