opencv 存储bgr格式/同理可类推yuv
需求背景
开发rk3588 音视频硬件编解码,然后看见他的输入文件格式。。 只能是裸的文件。不能是压缩过的。就是不能是jpg/png这种格式,只能是以下的图像/视频 的存储格式.那么我没有这个格式的,以前hi3559的bgr格式和他要的也不太一致,然后去搜了以下,发现他要的这个还算是标准格式的
mpi: color: id 0 0x00000 YUV420SP, NV12
mpi: color: id 1 0x00001 YUV420SP-10bit
mpi: color: id 2 0x00002 YUV422SP, NV24
mpi: color: id 3 0x00003 YUV422SP-10bit
mpi: color: id 4 0x00004 YUV420P, I420
mpi: color: id 5 0x00005 YUV420SP, NV21
mpi: color: id 6 0x00006 YUV422P, 422P
mpi: color: id 7 0x00007 YUV422SP, NV42
mpi: color: id 8 0x00008 YUV422-YUYV, YUY2
mpi: color: id 10 0x0000a YUV422-UYVY, UYVY
mpi: color: id 12 0x0000c YUV400-Y8, Y800
mpi: color: id 15 0x0000f YUV444SP
mpi: color: id 16 0x00010 YUV444P
mpi: color: id 65536 0x10000 RGB565
mpi: color: id 65537 0x10001 BGR565
mpi: color: id 65538 0x10002 RGB555
mpi: color: id 65539 0x10003 BGR555
mpi: color: id 65542 0x10006 RGB888
mpi: color: id 65543 0x10007 BGR888
mpi: color: id 65546 0x1000a ARGB8888
mpi: color: id 65547 0x1000b ABGR8888
mpi: color: id 65548 0x1000c BGRA8888
mpi: color: id 65549 0x1000d RGBA8888
先贴一段cmake文件
想要蹭个关注 所以水个cmake
cmake_minimum_required(VERSION 2.8)
project( cvtest )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( demo cv2.cpp )
target_link_libraries( demo ${OpenCV_LIBS} )
主函数就是cv2.cpp,使用的时候需要把这个存储为CMakeLists.txt,和cv2.cpp放在同一个路径下,当然,前提是你的系统有装opencv,我的版本是4.5.5
opencv 主函数
如果图像的格式是BGR888,表示每个像素由蓝色(Blue)、绿色(Green)、红色(Red)各占8位,总共24位。网上看了很多,没有说怎么直接存的,但是他们说Opencv读取进来就是 bgr888,这样的话,想着就直接使用文件读写往里写就可以了。
确实就写进去了。在rk3588的编解码应用中可以正常使用编码。
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/core/types.hpp>
#include "opencv4/opencv2/imgproc/imgproc_c.h"#include "opencv2/core/core.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <fstream>
using namespace cv;
using namespace std;
int main(int argc, char** argv ){cout<< "this test is for bgr picture store"<<endl;Mat image;image = imread( "./my.jpg", 1 );if ( !image.data ){printf("No image data \n");return -1;}printf("opencv version is %s\r\n",CV_VERSION);ofstream outputFile("./sample.bgr", std::ios::out | std::ios::binary);//程序将每个通道的值以二进制形式写入文件,并使用std::ios::binary标志打开文件,以确保以二进制形式写入数据。if (!outputFile.is_open()) {std::cerr << "无法打开文件" << std::endl;return 1; // 退出程序并返回错误代码}int rows = image.rows;int cols = image.cols;cout<<"rows is "<<rows<<" cols is "<<cols<<endl;// 将Mat数据写入文件for (int i = 0; i < rows; ++i) {for (int j = 0; j < cols; ++j) {cv::Vec3b pixel = image.at<cv::Vec3b>(i, j);outputFile.write(reinterpret_cast<char*>(&pixel[2]), 1); // 红色outputFile.write(reinterpret_cast<char*>(&pixel[1]), 1); // 绿色outputFile.write(reinterpret_cast<char*>(&pixel[0]), 1); // 蓝色}// outputFile << "\n"; // 每行结束后换行}// 关闭文件outputFile.close();std::cout << "Mat数据已成功写入文件。" << std::endl;// Mat image1;// cvtColor(image1, image, COLOR_BGR2YUV_I420);}
cv::Vec3b表示一个包含三个uchar(unsigned char)元素的向量,分别表示蓝色、绿色和红色通道的强度。
如果存储yuv等格式,需要使用cvtColor(inputImage, grayImage, COLOR_BGR2YUV);这个函数进行转换,然后进行存储,存储的地方应该还需要根据对应的格式修改
相关文章:
opencv 存储bgr格式/同理可类推yuv
需求背景 开发rk3588 音视频硬件编解码,然后看见他的输入文件格式。。 只能是裸的文件。不能是压缩过的。就是不能是jpg/png这种格式,只能是以下的图像/视频 的存储格式.那么我没有这个格式的,以前hi3559的bgr格式和他要的也不太一致&#x…...
[架构之路-248]:目标系统 - 设计方法 - 软件工程 - 需求工程- 需求开发:如何用图形表达需求,结构化需求分析与面向对象需求分析的比较与融合
目录 前言: 一、结构化和面向对象方法上的区别 二、结构化与面向对象分析方法优缺点比较 三、结构化方法与面向对象方法的融合使用 四、结构化方法与面向对象方法的相辅相成完成软件开发 前言: 结构化软件开发方法和面向对象的软件开发方法&#x…...
[数据结构]-AVL树
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、AVL树基…...
内存池的面试整理
文章思路来源 如何实现无锁申请? 每个线程申请自己的TreadCacheTLS对象,来管理自己的freeList数组。小内存的大小? 0-256K,并且对申请到的内存进行字节对齐,保证申请到的内存可以映射到对应的freeList中。映射规则&am…...
优化记录 -- 记一次搜索引擎(SOLR)优化
业务场景 某服务根据用户相关信息,使用搜索引擎进行数据检索 软件配置 solr 1台:32c 64g 数据10gb左右,版本 7.5.5 应用服务器1台:16c 64g 应用程序 3节点 问题产生现象 1、因业务系统因处理能不足,对业务系统硬件…...
电力感知边缘计算网关产品设计方案-网关系统通信架构方案
1.边缘协同控制模发 能针对建筑、充电桩、分布式储能、分布式光伏等典型设备建立对应物模型、完成数据采集通信协议设计和控制指令交互设计,能针对建筑、充换电站等典型场景提出具体实施方案和人工智能控制算法和逻辑。物模型、通信协议设计和控制指令交互设计科学、先进,能…...
RabbitMQ消息的可靠性
RabbitMQ消息的可靠性 一 生产者的可靠性 生产者重试 有时候由于网络问题,会出现连接MQ失败的情况,可以配置重连机制 注意:SpringAMQP的重试机制是阻塞式的,重试等待的时候,当前线程会等待。 spring:rabbitmq:conne…...
Opengl 纹理(知识点)
纹理(知识点) 以下是纹理用到的知识点,至于具体流程操作请参考: https://learnopengl.com/Getting-started/Textures 纹理环绕 纹理环绕(Texture Wrapping)的作用是定义在纹理坐标超出标准范围时系统如何…...
Centos 7 安装yum(针对python卸载yum出错)
提前下载所需安装包,按照下面顺序安装即可完成,每个依赖包必须正确安装 下载地址:http://mirrors.163.com/centos/7/os/x86_64/Packages/ rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps ##强制删除已安装程序及其关联 whereis …...
substr()与substring()的区别
在 JavaScript 编程语言中,substr() 和 substring() 都是字符串函数,用于截取指定位置的子字符串。虽然这两个函数都可以用于截取字符串,但它们之间存在一些区别。 substr() 语法:string.substr(start,length) 参数值:…...
MacOS 成为恶意软件活动的目标
Malwarebytes 警告称,一个针对 Mac 操作系统 (OS) 的数据窃取程序正在通过虚假的网络浏览器更新分发给毫无戒心的目标。 Atomic Stealer,也称为 AMOS,是 Mac OS 上流行的窃取程序。 Atomic Stealer (AMOS) 恶意软件最近被发现使用“ClearFa…...
从0开始学习JavaScript--JavaScript生成器
JavaScript生成器(Generator)是一项强大的语言特性,它允许函数在执行过程中被暂停和恢复,从而实现更灵活的控制流。本文将深入探讨JavaScript生成器的基本概念、用法,并通过丰富的示例代码展示其在实际应用中的优势和强…...
householder进行矩阵QR分解
文章目录 1. Householder 进行QR分解 1. Householder 进行QR分解 A Q R (1) AQR\tag1 AQR(1) A [ 1 2 0 1 1 0 3 1 1 0 3 2 1 2 0 2 ] (2) A\begin{bmatrix}1&2&0&1\\\\1&0&3&1\\\\1&0&3&2\\\\1&2&0&2\end{bmatrix}\tag2 A…...
利用叉积计算向量的旋向及折线段的拐向
一、向量叉积 两个向量 u u u、 v v v的叉积写作 u v n ∥ u ∥ ∥ v ∥ s i n θ \mathbf{u \times v n \left \| u \right \| \left \| v \right \| sin\theta } uvn∥u∥∥v∥sinθ 式中, n n n: 与 u u u、 v v v均垂直的单位向量,theta是两向量…...
Vmware 扩展硬盘空间后的操作-Ubuntu
在VMware中扩展了Ubuntu虚拟机的硬盘容量后,你需要在Ubuntu内部进行操作才能使用新增的空间。过程包括为增加的空间建立分区、格式化以及挂载该分区供使用。下面是具体的步骤: 首先登录到你的Ubuntu系统,用lsblk命令查看分区情况。这样你可以…...
Rust错误处理:Result
文章目录 简介错误匹配 Rust基础教程: 初步⚙ 所有权⚙ 结构体和枚举类⚙ 函数进阶⚙ 泛型和特征⚙ 并发和线程通信⚙ cargo包管理⚙ 可空类型Option Rust进阶教程: 用宏实现参数可变的函数⚙ 类函数宏 简介 Rust中没有提供类似try…catch之类…...
1410.HTML 实体解析器
题目来源: leetcode题目,网址:1410. HTML 实体解析器 - 力扣(LeetCode) 解题思路: 使用map存放特殊字符串及其应被替换为的字符串。然后遍历字符串替换 map 中的字符串即可。 解题代码: …...
Python通过串口收发文件
单位内外网是隔离的,USB对拷线被禁用,安全优盘使用太费事,就想到了通过串口传输文件. import serial from xmodem import XMODEM import osdef Send_File(filepath, portCOM8, baudrate115200):bn os.path.basename(filepath)filesize os.stat(filepath).st_sizestrSendFile…...
[crash] cxa_pure_virtual 崩溃分析与原理
摘要:工作过程中处理线上的崩溃时发现了一例cxa_pure_virtual相关的crash,直接看堆栈基本山很容易确认是有异步调用导致出发了ABI的异常。但是对于为什么会触发cxa_pure_virtual虽然有大致的猜测但是没有直接的证据,因此本文主要描述触发该类…...
2023年学习Go语言是否值得?探索Go语言的魅力
关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 作为一门流行且不断增长的编程语言,Go语言在2023年是否值得学习呢?让我们来看看学习Go语言的好处以及为何…...
Subtitle Edit:免费开源字幕编辑器的完整使用指南
Subtitle Edit:免费开源字幕编辑器的完整使用指南 【免费下载链接】subtitleedit the subtitle editor :) 项目地址: https://gitcode.com/gh_mirrors/su/subtitleedit 想要为视频添加专业字幕却苦于找不到合适的工具?Subtitle Edit作为一款功能强…...
语雀文档批量导出终极方案:5分钟实现创作内容完全自主
语雀文档批量导出终极方案:5分钟实现创作内容完全自主 【免费下载链接】yuque-exporter export yuque to local markdown 项目地址: https://gitcode.com/gh_mirrors/yuq/yuque-exporter 在语雀调整付费策略的背景下,yuque-exporter为你提供了一个…...
TexTeller:终极数学公式OCR解决方案,从图像到LaTeX的完整指南
TexTeller:终极数学公式OCR解决方案,从图像到LaTeX的完整指南 【免费下载链接】TexTeller TexTeller can convert image to latex formulas (image2latex, latex OCR) with higher accuracy and exhibits superior generalization ability, enabling it …...
如何为Nintendo Switch安装游戏?Awoo Installer的三种高效方案详解
如何为Nintendo Switch安装游戏?Awoo Installer的三种高效方案详解 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer Awoo Installer是一…...
GHelper终极指南:如何用5MB工具完全掌控华硕笔记本性能
GHelper终极指南:如何用5MB工具完全掌控华硕笔记本性能 【免费下载链接】g-helper Fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vivobook, Zenbook, ProArt, Ally, …...
保姆级避坑指南:用PX4 v1.12.3 + Gazebo搞定Offboard模式,解决‘Vehicle armed’失败问题
PX4 v1.12.3与Gazebo仿真环境深度调优:从Offboard模式解锁到轨迹飞行的全流程实战 去年夏天,当我第一次尝试用PX4的Offboard模式控制Gazebo中的无人机时,遇到了一个令人抓狂的问题——终端不断显示"Offboard enabled",但…...
Marp终极指南:5分钟学会用Markdown制作专业PPT
Marp终极指南:5分钟学会用Markdown制作专业PPT 【免费下载链接】marp The entrance repository of Markdown presentation ecosystem 项目地址: https://gitcode.com/gh_mirrors/mar/marp 你是否厌倦了复杂的PPT软件,想要一种更高效的方式来创建演…...
告别USB驱动开发噩梦:用TinyUSB在ESP32-S3上5分钟实现一个U盘功能
5分钟用ESP32-S3打造智能U盘:TinyUSB实战指南 当你的物联网设备需要快速导出传感器数据,或是工业控制器要现场更新固件时,能否像插U盘一样简单?传统USB协议开发往往需要数月学习,而今天我要分享的TinyUSB方案ÿ…...
AI进阶秘诀:Agent、Skills、Harness如何让AI“活”起来?
文章深入解析了现代AI应用中的三大核心概念:Agent(智能体)、Skills(技能)和Harness(调度框架)。Agent负责思考与决策,如同大脑;Skills提供执行工具,相当于手和…...
重构QQ音乐加密音频格式:用qmc-decoder实现跨平台解密
重构QQ音乐加密音频格式:用qmc-decoder实现跨平台解密 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 当你在QQ音乐平台购买或下载的歌曲只能在特定应用播放&am…...
