在 c++ 中,有四种显示图像的方法:1. sdl(跨平台);2. qt(跨平台框架);3. opencv(图像处理和计算机视觉库);4. win32 api(windows 系统)。选择方法取决于特定情况和应用程序要求。
如何在 C++ 中显示图像
在 C++ 中,有几种方法可以显示图像:
1. SDL (简单直接媒体层)
SDL 是一个跨平台库,支持在不同平台上显示图像:
#include
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();
}
2. Qt
Qt 是另一个跨平台框架,可以通过 QWidget 类显示图像:
#include
#include
#include
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
QLabel label;
label.setPixmap(QPixmap("image.png"));
label.show();
return app.exec();
}
3. OpenCV (开放式计算机视觉库)
OpenCV 专注于图像处理和计算机视觉,提供显示图像的函数:
#include
int main(int argc, char* argv[]) {
cv::Mat image = cv::imread("image.jpg");
cv::imshow("Image", image);
cv::waitKey(0); // 等待用户输入
return 0;
}
4. Win32 API
在 Windows 系统中,可以使用 Win32 API 来显示图像:
#include
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;
}
选择哪种方法取决于具体情况和应用程序的要求。
以上就是c++++如何显示图片的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!