ホームページ >バックエンド開発 >C++ >C++で画像を表示する方法

C++で画像を表示する方法

下次还敢
下次还敢オリジナル
2024-04-22 17:51:37929ブラウズ

C では、画像を表示するには 4 つの方法があります: 1. SDL (クロスプラットフォーム)、2. Qt (クロスプラットフォーム フレームワーク)、3. OpenCV (画像処理およびコンピューター ビジョン ライブラリ)。 Win32 API (Windows システム)。選択される方法は、特定の状況とアプリケーションの要件によって異なります。

C++で画像を表示する方法

#C で画像を表示する方法##C では、画像を表示する方法がいくつかあります。

1. SDL (Simple Direct Media Layer)

SDL は、さまざまなプラットフォームでの画像の表示をサポートするクロスプラットフォーム ライブラリです:

<code class="cpp">#include <SDL2/SDL.h>

int main(int argc, char* argv[]) {
  SDL_Init(SDL_INIT_EVERYTHING);
  SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
  SDL_Surface* image = SDL_LoadBMP("image.bmp");
  SDL_BlitSurface(image, NULL, screen, NULL);
  SDL_UpdateWindowSurface(screen);
  SDL_Delay(10000);  // 等待 10 秒
  SDL_Quit();
}</code>

2. Qt

Qt は、QWidget クラスを通じて画像を表示できる別のクロスプラットフォーム フレームワークです:

<code class="cpp">#include <QApplication>
#include <QLabel>
#include <QPixmap>

int main(int argc, char* argv[]) {
  QApplication app(argc, argv);
  QLabel label;
  label.setPixmap(QPixmap("image.png"));
  label.show();
  return app.exec();
}</code>

3 OpenCV (Open Computer Vision Library)

OpenCV は画像処理とコンピューター ビジョンに焦点を当てており、画像を表示するための関数を提供します:

<code class="cpp">#include <opencv2/opencv.hpp>

int main(int argc, char* argv[]) {
  cv::Mat image = cv::imread("image.jpg");
  cv::imshow("Image", image);
  cv::waitKey(0);  // 等待用户输入
  return 0;
}</code>

4. Win32 API

Windows システムでは、画像を表示するための Win32 API:

<code class="cpp">#include <windows.h>

int main(int argc, char* argv[]) {
  BITMAP bitmap;
  BITMAPINFO bitmapInfo;
  ZeroMemory(&bitmapInfo, sizeof(bitmapInfo));
  bitmapInfo.bmiHeader.biSize = sizeof(bitmapInfo);
  bitmapInfo.bmiHeader.biWidth = 640;
  bitmapInfo.bmiHeader.biHeight = 480;
  bitmapInfo.bmiHeader.biPlanes = 1;
  bitmapInfo.bmiHeader.biBitCount = 32;
  void* bits;
  HDC hdc = GetDC(NULL);
  HBITMAP hbitmap = CreateDIBSection(hdc, &bitmapInfo, DIB_RGB_COLORS, &bits, NULL, 0);
  HDC hdcMem = CreateCompatibleDC(hdc);
  HGDIOBJ oldObj = SelectObject(hdcMem, hbitmap);
  HBITMAP hbitmapImage = (HBITMAP)LoadImage(NULL, "image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
  HDC hdcImage = CreateCompatibleDC(hdc);
  HGDIOBJ oldObjImage = SelectObject(hdcImage, hbitmapImage);
  BitBlt(hdcMem, 0, 0, 640, 480, hdcImage, 0, 0, SRCCOPY);
  SelectObject(hdcMem, oldObj);
  SelectObject(hdcImage, oldObjImage);
  DeleteObject(hbitmapImage);
  DeleteObject(hdcImage);
  DeleteDC(hdcMem);
  ReleaseDC(NULL, hdc);
  DeleteObject(hbitmap);
  return 0;
}</code>

どの方法を選択するかは、状況とアプリケーションの要件によって異なります。

以上がC++で画像を表示する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。