该程序从文件中读入一幅图像,将之反色,然后显示出来


//
// hello-world.cpp
//
// 该程序从文件中读入一幅图像,将之反色,然后显示出来.
//

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>
 
int main(int argc, char *argv[])
{
  IplImage* img = cvLoadImage( "001.jpg");
  int height,width,step,channels;
  uchar *data;
  int i,j,k;
 
 
 
  // get the image data
  height    = img->height;
  width     = img->width;
  step      = img->widthStep;
  channels  = img->nChannels;
  data      = (uchar *)img->imageData;
  printf("Processing a %dx%d image with %d channels  step is%d \n",height,width,channels,step);
 
  // create a window
  cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
  cvMoveWindow("mainWin", 100, 100);
 
  // invert the image
    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];
 
  // show the image
  cvShowImage("mainWin", img );
 
  // wait for a key
  cvWaitKey(0);
 
  // release the image
  cvReleaseImage(&img );
  return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在命令行执行 C 程序时,可以使用以下命令: ``` ./程序名 原始BMP图像文件名 反色处理后的图像文件名 ``` 例如: ``` ./invert image.bmp inverted_image.bmp ``` 在程序,可以使用 `argc` 和 `argv` 参数来访问命令行参数。`argc` 是参数个数,`argv` 是一个字符串数组,其第一个元素是程序名,接下来的元素是命令行参数。 例如,在程序可以使用以下代码来访问原始图像文件名和反色处理后的图像文件名: ```c char *input_filename = argv[1]; char *output_filename = argv[2]; ``` 注意,在使用命令行参数之前,应该先检查 `argc` 的值,确保有足够的参数。 ### 回答2: 在C语言,可以通过命令行参数传递原始BMP图像文件名和反色处理后的图像文件名。以下是一个简单的代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { // 检查参数数量是否正确 if (argc != 3) { printf("参数数量错误!请指定原始BMP图像文件名和反色处理后的图像文件名。\n"); return 1; } // 获取原始BMP图像文件名和反色处理后的图像文件名 char *originalFileName = argv[1]; char *invertedFileName = argv[2]; // 执行反色处理 // TODO: 在这里编写代码进行反色处理,将原始BMP图像文件保存为反色处理后的图像文件 // 输出处理完成的信息 printf("成功处理原始BMP图像文件:%s\n生成反色处理后的图像文件:%s\n", originalFileName, invertedFileName); return 0; } ``` 使用该程序,可以在命令行执行以下命令来传递原始BMP图像文件名和反色处理后的图像文件名作为参数: ``` ./program_name 原始BMP图像文件名 反色处理后的图像文件名 ``` 其,`./program_name` 是可执行程序的名称,`原始BMP图像文件名` 是想要处理的原始BMP图像文件的路径和文件名,`反色处理后的图像文件名` 是处理完成后生成的反色图像文件的路径和文件名。 ### 回答3: 在C语言,可以通过命令行参数来传递程序执行时所需的参数。对于需要在命令行执行程序并且将原始BMP图像文件名和反色处理后的图像文件名作为参数的需求,可以按照以下步骤进行处理: 1. 在程序的main函数,接收命令行参数。main函数的定义可以如下所示: ```c int main(int argc, char *argv[]) ``` 2. 命令行参数会以字符串数组的形式存储在argv,并且参数的个数会作为argc的值传入。在这个特定的程序,我们需要两个参数,即原始BMP图像文件名和反色处理后的图像文件名。因此我们需要对argc进行判断,确保传入了足够的参数。可以使用如下的if语句进行判断: ```c if (argc < 3) { printf("请传入原始BMP图像文件名和反色处理后的图像文件名作为参数!\n"); return 1; } ``` 3. 接下来,可以通过访问argv的元素来获取传入的参数值,并进行相应的处理。假设原始BMP图像文件名存储在argv[1]反色处理后的图像文件名存储在argv[2]。 4. 最后,根据传入的文件名,进行反色处理操作。具体的反色处理操作需要根据具体需求来实现,可以使用文件操作函数读取原始BMP图像文件的像素值,并对每个像素的RGB值进行反色处理。然后将处理后的图像文件保存为反色处理后的图像文件名所指定的文件。 总结:通过命令行参数传递原始BMP图像文件名和反色处理后的图像文件名,可以实现在命令行执行程序并进行相应处理的功能。以上是一个简单的示例,具体的实现还需要根据实际需求进行扩展和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值