Maison > développement back-end > C++ > Comment afficher des images en C++

Comment afficher des images en C++

下次还敢
Libérer: 2024-04-22 17:51:37
original
926 Les gens l'ont consulté

En C++, il existe quatre façons d'afficher des images : 1. SDL (multiplateforme) ; 2. Qt (framework multiplateforme) ; 3. OpenCV (bibliothèque de traitement d'images et de vision par ordinateur) ; système ). La méthode choisie dépend de la situation spécifique et des exigences de l'application.

Comment afficher des images en C++

Comment afficher des images en C++

En C++, il existe plusieurs façons d'afficher des images :

1 SDL (Simple Direct Media Layer)

SDL est une bibliothèque multiplateforme, Prend en charge l'affichage d'images sur différentes plates-formes :

<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>
Copier après la connexion

2. Qt

Qt est un autre framework multiplateforme qui peut afficher des images via la classe 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>
Copier après la connexion

3. se concentre sur le traitement d'image et la vision par ordinateur, fournissant des fonctions d'affichage d'images :

<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>
Copier après la connexion

4. API Win32

Dans les systèmes Windows, vous pouvez utiliser l'API Win32 pour afficher des images :

<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>
Copier après la connexion
La méthode à choisir dépend du cas spécifique. situation et exigences de l’application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
c++
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal