首页 > 其他分享 >opencv Mat To Heif

opencv Mat To Heif

时间:2024-12-03 23:30:48浏览次数:10  
标签:Mat 文件格式 opencv HEIF build install 图像 Heif vcpkg

高效率图像文件格式(英语: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

相关文章

  • MATLAB中物理系统建模仿真介绍
    Simscape是MATLAB提供的一个强大的多域物理系统建模和仿真工具,它允许用户在Simulink环境中创建和模拟复杂的物理系统。Simscape模型可以帮助用户细化需求、设计控制系统、测试嵌入式控制器,并使用数字孪生支持在役运行1. Simscape概述Simscape使用库扩展Simulink,用于对......
  • Power Automate 获取用户属性
    前言最近,要在项目里需要获取用户的属性正文在PowerAutomate里有个Office365Users,里面有Action可以获取用户属性执行的结果,可以获取到很多属性,当然,这里都是默认的,如果想要更多的属性,在Selectfields里添加就可以了。结束语想要其它的属性,参......
  • 基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真
    1.算法仿真效果matlab2022a仿真结果如下(完整代码运行后无水印):  仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要       在现代无线通信系统中,多输入多输出(Multiple-InputMultiple-Output,MIMO)技术是提高频谱效率和数据传输速率的关键。然而......
  • 下载并编译OpenCV脚本记录(支持图片和视频处理)
    Ubuntu环境,源码编译OpenCV基础环境包含c++编译和调试工具sudoaptupdatesudoaptinstall-ybuild-essentialcmakegdb如果要支持opencv图片和视频处理至少还需要ffmpeg编解码相关的库(GStreamer库也可以)sudoaptinstall-ylibavcodec-devlibavformat-devlibavutil-de......
  • given the target directory structure mentioned above and the raw files, the Cur
    Yes,youcanautomatethisprocessinCursorIDEusingAgentmode.Here'showtodoit:InitialCommandtoProcessDocs#TellCursortoanalyzeandorganizedocs/runpythonprocess_docs.pyraw_docs/docs/OrdirectlythroughAIcommands:#1.Fi......
  • Matlab2023a安装arduino硬件支持包记录
    安装硬件支持包参考教程:账号自行免费注册即可https://blog.csdn.net/Wakatipu1734/article/details/127118473下载好的文件如下 接着复制archives到指定目录,期中教程有一个问题:在下载好安装包后打开应该是install_supportsoftware(参考readme中详细步骤),而不是上述教程......
  • mysql的information_schema数据库包含的表
    1.information_schema 数据库的系统表系统表说明schemata存储数据库的信息,包括名称、字符集、排序规则。tables提供数据库中各个表的信息,包括表类型(如BASETABLE、VIEW)、存储引擎、行格式、行数、创建时间等信息。columns存储关于每个表的列的信息,包括列名、数......
  • Ubuntu20.04 由源码编译安装opencv3.2 OpenCV
    Ubuntu20.04由源码编译安装opencv3.2.0获取opencv及opencv_contrib源代码创建目录以存放opencv及opencv_contrib源代码mkdir~/opencv3.2.0cd~/opencv3.2.0获取opencv源代码并切换到对应taggitclonehttps://github.com/opencv/opencv.gitcdopencvgitchecko......
  • 使用 Rust 和 OpenCV 进行物体检测
    我们将利用Rust的opencv库来封装OpenCV的功能,加载YOLOv3模型并进行图像的物体检测。YOLO(YouOnlyLookOnce)是一个非常高效的实时目标检测模型,能够在图片中快速定位出物体并标注出边界框。环境准备安装Rust如果你还没有安装Rust,可以使用下面的命令进行安装:bashcu......
  • 编译OpenCV——ubuntu x86_64平台
    在x86_64平台上编译得到两个版本的opencv:x86_64和arm64方式与此博客一样编译OpenCV——jetson嵌入式平台-夕西行-博客园,区别只有如下几个地方1、编译x86_64版本时最终放到默认的/usr/local目录里  2、编译arm64版本时 最终放到/opt/opencv_aarch64目录里,以便与本......