高效率图像文件格式(英语:High Efficiency Image File Format, HEIF;也称高效图像文件格式)是一个用于单张图像或图像序列的文件格式。它由运动图像专家组(MPEG)开发,并在MPEG-H Part 12(ISO/IEC 23008-12)中定义。
HEIF规范也定义了高效率视频编码(HEVC)编码的内嵌图像和HEVC编码的图像序列的存储方式,其中以受约束的方式应用帧间预测。
HEIF文件与ISO基本媒体文件格式(ISOBMFF,ISO/IEC 14496-12)兼容,并且还可以包括其他媒体流,例如定时的文本和音频。
环境配置:
相关资源:https://github.com/strukturag/libheif
Windows(最简单、快捷方式,自行编译容易出错)
You can build and install libheif using the vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat
./vcpkg integrate install
./vcpkg install libheif
Linux/macOS(或参考上述相关资源链接)
1. Install dependencies with Homebrew
brew install cmake make pkg-config x265 libde265 libjpeg libtool
2. Configure and build project (–preset argument needs CMake >= 3.21):
mkdir build
cd build
cmake --preset=release ..
./configure
make
功能:cv::Mat 转 HEIF文件, HEIF文件转cv::Mat
```cpp
#include <libheif/heif.h>
#include <opencv2/opencv.hpp>
#include <iostream>
bool RGBMatToHeif(cv::Mat& mat, const char* filename)
{
if (mat.empty() || mat.type() != CV_8UC3)
{
std::cerr << "Invalid Mat format. Expected 8UC3." << std::endl;
return false;
}
struct heif_image* image;
struct heif_context* ctx = heif_context_alloc();
struct heif_error err;
int width = mat.cols;
int height = mat.rows;
// 创建HEIF图像
err = heif_image_create(width, height, heif_colorspace_RGB, heif_chroma_interleaved_RGB, &image);
if (err.code != heif_error_Ok)
{
std::cerr << "Error adding plane to HEIF image:" << err.message << std::endl;
heif_image_release(image);
heif_context_free(ctx);
return false;
}
// 添加一个用于交错 RGB 通道的图像平面
err = heif_image_add_plane(image, heif_channe
标签:Mat,文件格式,opencv,HEIF,build,install,图像,Heif,vcpkg
From: https://blog.csdn.net/weixin_50918736/article/details/144226320