21xrx.com
2025-03-29 19:58:47 Saturday
文章检索 我的文章 写文章
C++如何导入图片?代码详解
2023-07-02 16:07:20 深夜i     13     0
C++ 导入图片 代码详解

在C++中,我们可以通过一些库来实现图片的导入和操作。其中比较常用的是OpenCV库和SDL库。

OpenCV库是一个比较全面的计算机视觉库,可以用来处理图像、视频和模式识别等方面的任务。使用OpenCV库导入图片需要先安装该库,并在代码中引入相应的头文件。下面是一个使用OpenCV库导入图片的例子:

#include "opencv2/opencv.hpp"
using namespace cv;
int main()
{
 Mat img; // 定义图像Mat对象
 img = imread("my_image.jpg"); // 导入图片
 if (!img.data) // 判断图像是否导入成功
 {
  printf("Error loading image");
  return -1;
 }
 namedWindow("My Image", WINDOW_AUTOSIZE); // 创建一个窗口
 imshow("My Image", img); // 在窗口中显示图像
 waitKey(0); // 等待按键
 return 0;
}

在上面的代码中,我们首先定义了一个图像Mat对象,然后使用imread函数导入了名为my_image.jpg的图片。接着判断了图像是否导入成功,若失败则输出错误信息并返回-1。若成功,则创建了一个名为"My Image"的窗口,并在其中显示了导入的图片。最后使用waitKey函数等待用户按下按键,程序结束。

另外,如果需要对导入的图片进行一些处理,比如缩放、旋转、截取等,可以使用OpenCV库提供的相应函数。

SDL库是一个跨平台的多媒体库,可以用来创建图形界面和音视频播放器等。使用SDL库导入图片需要先安装该库,并在代码中引入相应的头文件。下面是一个使用SDL库导入图片的例子:

#include <SDL2/SDL.h>
int main()
{
 SDL_Window* window = NULL// 定义窗口对象指针
 SDL_Surface* surface = NULL// 定义表面对象指针
 if (SDL_Init(SDL_INIT_VIDEO) < 0// 初始化SDL库
 {
  printf("Error initializing SDL");
  return -1;
 }
 window = SDL_CreateWindow("My Image", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); // 创建窗口
 if (window == NULL// 判断窗口是否创建成功
 {
  printf("Error creating window");
  return -1;
 }
 surface = SDL_LoadBMP("my_image.bmp"); // 导入图片
 if (surface == NULL// 判断图片是否导入成功
 {
  printf("Error loading image");
  return -1;
 }
 SDL_BlitSurface(surface, NULL, SDL_GetWindowSurface(window), NULL); // 在窗口表面上绘制图片
 SDL_UpdateWindowSurface(window); // 更新窗口表面
 SDL_Delay(5000); // 延迟5秒
 SDL_FreeSurface(surface); // 释放表面对象内存
 SDL_DestroyWindow(window); // 销毁窗口对象
 SDL_Quit(); // 退出SDL库
 return 0;
}

在上面的代码中,我们首先初始化了SDL库,并创建了一个名称为"My Image"、大小为640x480的窗口。然后使用SDL_LoadBMP函数导入了名为my_image.bmp的图片,并判断了是否导入成功。接着使用SDL_BlitSurface函数将图片绘制在窗口表面上,并使用SDL_UpdateWindowSurface函数更新窗口表面。最后延迟5秒后释放表面对象内存、销毁窗口对象并退出SDL库。注意,在使用SDL库导入图片时,需要将图片转换为BMP格式。如果需要导入其他格式的图片,可以使用第三方库,比如SDL_image库。

  
  

评论区