21xrx.com
2024-11-22 10:01:55 Friday
登录
文章检索 我的文章 写文章
C++如何导入图片?代码详解
2023-07-02 16:07:20 深夜i     --     --
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库。

  
  

评论区

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