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;
}