json格式存储b64编码的rgb raw数据

news2024/9/24 4:28:49

1.rgb raw数据准备

利用python将jpg里面的rgb raw数据提取出来。

import cv2

# 读取 JPG 图像
image_path = '1.jpg'
image = cv2.imread(image_path)#imread读出来的顺序是BGR
print("image shape:",image.shape)

# 将图像由BGR转换为 RGB 数据
rgb_data = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# cv2.imwrite() function is used to save the RGB data to a file. 
# The output_path variable specifies the path and filename for the output file, which should have a JPG extension
#output_path = 'output'
#cv2.imwrite(output_path,rgb_data)
# 将RGB存为RAW数据
output_path = 'rgb.raw'
rgb_data.tofile(output_path)

1.1 查看raw数据

在这里插入图片描述

2.代码实现

在这里插入图片描述

2.1 cjson库:https://github.com/DaveGamble/cJSON

2.2 base64库:https://github.com/jwerle/b64.c

2.3 工程目录

在这里插入图片描述

#include <stdio.h>
#include "cjson/cJSON.h"
#include "b64.c-0.1.0/b64.c-0.1.0/b64.h"
#include <stdlib.h>
int main()
{
	cJSON* json_test = cJSON_CreateObject();
	cJSON_AddNumberToObject(json_test, "emiss", 95);
	cJSON* json_point1 = cJSON_CreateObject();
	cJSON_AddNumberToObject(json_point1, "x", 0);
	cJSON_AddNumberToObject(json_point1, "y", 0);
	cJSON* json_point2 = cJSON_CreateObject();
	cJSON_AddNumberToObject(json_point2, "x", 0);
	cJSON_AddNumberToObject(json_point2, "y", 0);
	cJSON* json_points = cJSON_CreateArray();
	cJSON_AddItemToArray(json_points, json_point1);
	cJSON_AddItemToArray(json_points, json_point2);
	cJSON* json_point = cJSON_CreateObject();
	cJSON_AddItemToObject(json_test, "point", json_points);
	FILE* fp = fopen("rgb.raw", "rb+");
	char* buf = NULL;
	int len = 0;
	if (fp) {
		fseek(fp, 0, SEEK_END);
		len = ftell(fp);
		buf = (char*)malloc(len);
		fseek(fp, 0, SEEK_SET);
		fread(buf, 1, len, fp);
	}
	//编码
	char* enc = b64_encode(buf, len);
	//printf("enc:%s\n", enc);
	cJSON_AddStringToObject(json_test, "y16data", enc);
	cJSON* testy16 = cJSON_GetObjectItem(json_test, "y16data");
	char* buf1 = testy16->valuestring;
	char* dec = b64_decode(buf1, strlen(buf1));
	//printf("dec:%s\n", dec);
	FILE* fp1 = fopen("rgb_result.raw", "wb+");
	if (fp1) {
		fwrite(dec, 1, len, fp1);
		fclose(fp1);
	}
	char* str = cJSON_Print(json_test);
	printf("str:%s,len:%d\n", str,strlen(str));
	cJSON_Delete(json_test);
	fclose(fp);
	free(buf);
	return 0;
}


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是水坑攻击

水坑攻击 1. 水坑攻击的概念1. 水坑攻击的原理2. 水坑攻击的常用手段3. 典型水坑攻击事件 1. 水坑攻击的概念 水坑攻击&#xff08;Watering Hole Attack&#xff09;是一种网络攻击方法&#xff0c;其名称来源于自然界的捕食方式。 攻击者会通过前期的调查或各种社会工程手段…

2023年【河北省安全员B证】免费试题及河北省安全员B证作业考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 河北省安全员B证免费试题考前必练&#xff01;安全生产模拟考试一点通每个月更新河北省安全员B证作业考试题库题目及答案&#xff01;多做几遍&#xff0c;其实通过河北省安全员B证在线考试很简单。 1、【多选题】一般…

计算机中了faust勒索病毒怎么办,faust勒索病毒解密,数据恢复

近年来网络技术得到了飞速发展&#xff0c;为人们的企业生产生活提供了极大便利&#xff0c;但随之而来的网络安全威胁也不断增加&#xff0c;近期&#xff0c;云天数据恢复中心收到了很多企业的求助&#xff0c;企业的计算机服务器遭到了faust勒索病毒攻击&#xff0c;导致企业…

【java学习—九】内部类(7)

文章目录 1. 概念2. 内部类特性3. 内部类实现多重继承的应用 1. 概念 &#xff08;1&#xff09;在 Java 中&#xff0c;允许一个类的定义位于另一个类的内部&#xff0c;前者称为内部类&#xff0c;后者称为外部类。     &#xff08;2&#xff09;Inner class 一般用在定…

亚马逊哪个站点好做?亚马逊全球站点介绍!

前言 亚马逊全球有18个站点&#xff0c;其中七大站点分别为&#xff1a;北美站、欧洲站、日本站、澳洲站、印度站、中东站、新加坡站。按照国家和地区分为中国、美国、加拿大、墨西哥、英国、德国、法国、西班牙、意大利、澳大利亚、日本、印度、土耳其、中东和巴西。不同的站…

GoLong的学习之路(十三)语法之标准库 log(日志包)的使用

上回书说到&#xff0c;flag的问题。这回说到日志。无论是软件开发的调试阶段还是软件上线之后的运行阶段&#xff0c;日志一直都是非常重要的一个环节&#xff0c;我们也应该养成在程序中记录日志的好习惯。 文章目录 log配置logger配置日志前缀配置日志输出位置自定义logger …

vscode配置C/C++

首先下载 https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ 解压到一个方便的文件夹中 在环境变量中添加 C:\mingw64\bin验证添加的环境变量&#xff0c;打开cmd&#xff0c;输入gcc --version 进入vscode进行配置 安装插件 进行配置 gcc和g的配置文件…

基于ssm民宿推荐系统(2023年☆全网唯一)【附PPT|开发文档|表结构|万字文档(LW)和搭建文档】

主要功能 前台登录&#xff1a; 注册用户&#xff1a;用户账号、密码、姓名、头像、性别、年龄、手机、身份证号 用户&#xff1a; ①首页、近期活动展示、新闻资讯、系统简介、关于我们、近期活动推荐、热门客房推荐、查看更多 ②近期活动、民宿名称搜索、热门客房、客房名称…

常见排序实现

排序 1.排序的概念及其运用排序的概念 2.常见排序算法的实现插入排序直接插入排序希尔排序( 缩小增量排序 ) 选择排序直接选择排序堆排序 交换排序冒泡排序快速排序快速排序优化快速排序非递归 归并排序非比较排序 3.排序算法复杂度及稳定性分析 1.排序的概念及其运用 排序的概…

SpringCloud之Sentinel概述和安装及简单整合

目录 Sentinel概述 基本介绍 Sentinel 基本核心概念 Sentinel安装 简单安装启动 启动配置项 SpringCloud简单整合 实战架构 父工程pom文件 teacher-service服务 student-service服务 测试 整合Sentinel Sentinel概述 基本介绍 Sentinel是阿里巴巴开源的一款微…

haproxy高可用集群

高可用集群 Haproxy &#xff1a;他是常用的负载均衡软件 Nginx 支持四层转发&#xff0c;和七层转发 Haproxy 也可以四层和七层转发 LVS的DR发和nat是基于四层还是七层的转&#xff1f; 都基于是四层转发&#xff08…

算法通过村第十七关-贪心|白银笔记|贪心高频问题

文章目录 前言区间问题判断区间是否重复合并区间插入区间 字符串分割加油站问题总结 前言 提示&#xff1a;如果生活把你的门关上了&#xff0c;那你就再打开&#xff0c;这就是门&#xff0c;门就是这样的。 --佚名 贪婪的思想不一定要理解的很透彻&#xff0c;但是贪婪的问题…

学习Java应该关注哪些网站?

前言 下面是我总结的一些不错的网站&#xff0c;可以收藏看一下哈~希望对你有帮助 一、入门教程类 主要是教程性质的网站&#xff0c;主要是新手学习参考以及相关知识的内容参考 1、菜鸟教程&#xff08;https://www.runoob.com&#xff09; 2、Java学习笔记&#xff08;http…

2023年【广东省安全员A证第四批(主要负责人)】考试内容及广东省安全员A证第四批(主要负责人)模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 广东省安全员A证第四批&#xff08;主要负责人&#xff09;考试内容根据新广东省安全员A证第四批&#xff08;主要负责人&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将广东省安全员A证第四批&#x…

红眼特效出处竟是斯大林电脑病毒

相信不少小伙伴看过这种红眼特效的视频&#xff0c;那么你知道这个特效最早出自哪里吗&#xff1f; 其实这个红眼病毒最早出于一个俄罗斯的电脑病毒斯大林上&#xff0c;一旦电脑感染这个病毒&#xff0c;屏幕上就会出现一个红眼特效的斯大林&#xff0c;同时不断播放前苏联国…

学习笔记:最小生成树

最小生成树 引入 我们定义无向连通图的 最小生成树&#xff08;Minimum Spanning Tree&#xff0c;MST&#xff09;为边权和最小的生成树。 注意&#xff1a;只有连通图才有生成树&#xff0c;而对于非连通图&#xff0c;只存在生成森林。 实现 求最小生成树的算法有 Prim…

力扣每日一题73:矩阵置零

题目描述&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2…

多线程---wait和notify

文章目录 使用场景使用方法原理notify VS notifyAll 使用场景 我们都知道线程的调度是“随机的”&#xff0c;但是我们在很多时候都希望多个线程能够按照一个预期的顺序来执行。wait和notify就是用来调配线程执行顺序的。 使用方法 public static void main(String[] args) {…

Hand Avatar: Free-Pose Hand Animation and Rendering from Monocular Video

Github&#xff1a; https://seanchenxy.github.io/HandAvatarWeb 1、结构摘要 MANO-HD模型&#xff1a;作为高分辨率网络拓扑来拟合个性化手部形状将手部几何结构分解为每个骨骼的刚性部分&#xff0c;再重新组合成对的几何编码&#xff0c;得到一个跨部分的一致占用场纹理建…

?SW转cad尺寸不一致

应该是330 中心线不对