21xrx.com
2024-09-20 00:46:19 Friday
登录
文章检索 我的文章 写文章
C++如何输出图像?
2023-07-13 01:26:59 深夜i     --     --
C++ 输出 图像

在C++中输出图像是一个常见的需求,特别是在计算机视觉和图像处理的应用中。C++提供了多种方式来输出图像,下面介绍几种常见的方法。

1. 使用OpenCV库

OpenCV是一个常用的计算机视觉库,支持图像和视频的读写、处理、分析等。使用OpenCV库可以很方便地输出图像,下面是一个示例代码:


#include <opencv2/opencv.hpp>

using namespace cv;

int main()

{

  // 读取图像

  Mat img = imread("example.jpg");

  // 在窗口中显示图像

  namedWindow("Example");

  imshow("Example", img);

  // 保存图像

  imwrite("result.jpg", img);

  // 等待按键

  waitKey(0);

  return 0;

}

2. 使用QT库

QT是一个跨平台的GUI应用程序开发框架,也提供了图像处理和显示的功能。下面是一个使用QT库输出图像的示例代码:


#include <QApplication>

#include <QLabel>

#include <QPixmap>

int main(int argc, char* argv[])

{

  QApplication app(argc, argv);

  // 读取图像

  QPixmap pixmap("example.jpg");

  // 显示图像

  QLabel label;

  label.setPixmap(pixmap);

  label.show();

  // 保存图像

  pixmap.save("result.jpg");

  return app.exec();

}

3. 使用SDL库

SDL是一个跨平台的多媒体库,支持图像、音频、输入输出等。下面是一个使用SDL库输出图像的示例代码:


#include <SDL2/SDL.h>

int main(int argc, char* argv[])

{

  SDL_Init(SDL_INIT_VIDEO);

  // 读取图像

  SDL_Surface* img = SDL_LoadBMP("example.bmp");

  // 创建窗口

  SDL_Window* window = SDL_CreateWindow("Example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, img->w, img->h, SDL_WINDOW_SHOWN);

  // 创建渲染器

  SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);

  // 创建纹理

  SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, img);

  // 渲染纹理

  SDL_RenderCopy(renderer, texture, NULL, NULL);

  SDL_RenderPresent(renderer);

  // 保存图像

  SDL_SaveBMP(img, "result.bmp");

  // 等待按键

  SDL_Event e;

  bool quit = false;

  while (!quit) {

    while (SDL_PollEvent(&e)) {

      if (e.type == SDL_QUIT || e.type == SDL_KEYDOWN)

        quit = true;

      

    }

  }

  // 释放资源

  SDL_DestroyTexture(texture);

  SDL_DestroyRenderer(renderer);

  SDL_DestroyWindow(window);

  SDL_FreeSurface(img);

  SDL_Quit();

  return 0;

}

以上三种方法都可以很方便地输出图像,具体选择哪种方法取决于项目的需求和开发者的经验。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复