作者:昌山小屋
来源:CSDN
原文:https://blog.csdn.net/ChuiGeDaQiQiu/article/details/84945901
版权声明:本文为博主原创文章,转载请附上博文链接!
参考为毛我要干这件事,把一张jpg图片转成bgr(注意顺序是bgr)二进制文件?最近在弄华为Hi3519AV100开发板上的一些深度学习的样例程序,没想到它的输入文件不是普通的jpg,而是bgr格式的二进制文件,所以不是我闲得蛋疼。还别说,这样确实是大大节省了空间。我一张3.8M的测试文件(test.jpg),转成二进制后为276K。

以上是引用的博文。

补充一点,海思提供windows Ruyi studio,仿真测试时,可以用jpg bmp等图片类型,但是需要转换成raw数据,速度特别慢,如果提前手动转换好,再拿去仿真测试,直接读入raw数据,速度就快很多。

代码也是参考了博文的代码,根据自己的习惯和环境,做了一点修改,虽然是小的修改,但万一谁刚好需要就拿去用省的自己修改了。

  1. c改成c/++
  2. IplImage *改为Mat;
  3. widthstep
  4. 补充一点验证结果
  5. visual studio平台编译

代码如下,vs中创建项目,增加源文件cvt2bgr.cpp,配置好opencv头文件和路径,编译、运行。
结果验证:

  1. dog_bike_car.jpg, 768x576,代码中resize成300x300,生成dog_bike_car_300x300.bgr,大小263kb,和海思sample中提供大小一样也是263kb.
  2. horse_dog_car_person.jpg, 500x375, resize成224x224,生成horse_dog_car_person_224x224.bgr,大小147kb,和海思sample中提供大小一样也是147kb.
  3. 将转换好的.bgr,和海思sample提供的bgr,测试结果一样,说明转换正确,大胆拿去用。

#include <unistd.h>
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"using namespace cv;typedef unsigned char U_CHAR;int main()
{const char *filename = "dog_bike_car.bmp";const char *outname = "dog_bike_car.bgr";int flag = 1;cv::Mat img = cv::imread(filename);if (!img.data){printf("read image error\n");return -1;}//缩放resize(img, img, Size(300, 300));  //224x224//imshow("img",img);//waitKey(0);U_CHAR *data = (U_CHAR*)img.data;int step = img.step;printf("Step: %d, height: %d, width: %d\n",step, img.rows, img.cols);FILE *fp = fopen(outname, "wb");int h = img.rows;int w = img.cols;int c = img.channels();for (int k = 0; k<c; k++) {for (int i = 0; i<h; i++) {for (int j = 0; j<w; j++) {fwrite(&data[i*step + j*c + k], sizeof(U_CHAR), 1, fp);}}}fclose(fp);return 0;
}

图像jpg转.bgr二进制文件_海思开发相关推荐

  1. 魔百盒CM201-2_YS、ZG、CH、(emmc,nand)_海思3798mv300_全套刷机固件

    魔百盒CM201-2_YS.ZG.CH.(emmc,nand)_海思3798mv300_全套刷机固件 YS易视腾代工.ZG朝哥代工.CH长虹代工 固件说明: 本固件为移动魔百和CM201-2运营商盒子 ...

  2. 魔百盒M301H(ZN、JL、CW、SM代工)_海思3798mv300_全套刷机固件

    魔百盒M301H(ZN.JL.CW.SM代工)_海思3798mv300_全套刷机固件 ZN:兆能.JL九联.CW创维.SM数码 固件说明: 本固件为移动魔百和M301h运营商盒子主控芯片为海思3798 ...

  3. 海思芯片怎么使用tde给qt加速_海思芯片图形层的开发指南与方案

    海思开发指南: 1:图形层界面的开发:图形二维加速器(TDE),硬件对图形图像的处理 HiFB用于管理叠加图形层:Hisilicon Framebuffer在framebuffer的基础上增加层间co ...

  4. 海思开发板遇到的问题启发性的链接

    网络问题 Failed to start Raise network interfaces after upgrading to 16.04 networking - Failed to start ...

  5. 【华为出品】物联网全栈开发实战营第2期来啦!送海思开发板

    物联网一直在改变我们生活的方方面面.可穿戴设备有助于监控我们的偏好.习惯和健康状况.智能家居设备可提高家居的舒适度.安全性和便利性.城市利用连接的数字设备收集的海量数据(数十亿个)来改善城市规划.制造 ...

  6. 海思开发板海图科技测评,海图海思开发板怎么样

    关于海思开发板海图科技的测评,相关关键字:hi3516,hi3519,hi3531,hi3535,hi3536,hi3559,hi3403 最近网络上关于海图的海思开发板宣传的沸沸扬扬,很多人都想要一 ...

  7. 开源海思开发板(HIVIEW开发板)

    大家好,今天给大家分享一个有料的海思开发板,可用于快速构建产品样机. HIVIEW简介: HIVIEW是个小而专业的设计公司(海思软/硬件设计能力13年以上)     我们的目标 **以开放的软/硬件 ...

  8. 海思开发板FFmpeg+Nginx,推流RTMP播放(优秀教程收集+实操整理)

    海思开发板FFmpeg+Nginx推流RTSP播放(优秀教程收集+实操整理) 安装FFmpeg及移植 FFmpeg编译问题收录: static declaration of 'cbrt' follow ...

  9. 海思开发板上添加ftp功能

    海思开发板上添加ftp功能 前言: 本博客是基于海思3520Dv100开发,编译工具链为:arm-hisiv100nptl-linux-gcc 1.下载stupid-ftpd-1.5beta.tar. ...

最新文章

  1. 英国最新报告:40% AI公司其实没用任何AI技术
  2. go swagger
  3. Java 多态的简单介绍.
  4. 在Dialog中实现下拉框效果并对下拉框赋自定义的值
  5. 【HDU - 6186】CS Course(按位与,按位或,按位异或的区间统计,二进制拆位)
  6. Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
  7. 中移4G模块-ML302-OpenCpu开发-2-MQTT连接阿里云
  8. CentOS安装MySQL及其使用(总结整理)
  9. 拓端tecdat|SPSS中的多层(等级)线性模型Multilevel linear models研究整容手术数据
  10. android拉勾轮播,拉勾网顶部轮播图的实现(一)以及简单闭包的应用
  11. 游戏开发入门如何点亮技术树?
  12. 读书笔记 · AI产品经理的工作流程
  13. 入手华为云学生机体验
  14. 自适应增强算法Adaboost——前人栽树后人乘凉
  15. 印刷ERP解决方案推荐
  16. C语言编程核心要点,男人看了沉默,女人看了流泪
  17. 计算机本科毕业论文要求,计算机科学与技术学院本科毕业设计(论文)规范(试行)...
  18. 笔记本电脑电池的保养和优化
  19. 利用scp 在linux之间传输文件
  20. 构建三维动画的五大设计软件,你最pick谁?

热门文章

  1. 计算机汽车行业术语,汽车专业名词大全.doc
  2. 28、基于51单片机空气智能加湿器系统设计
  3. 自建linux dns服务器,自己搭建递归DNS服务器
  4. 学习Python中turtle模块的基本用法(5:绘制简笔画羊)
  5. Deepdive原理
  6. 晋中职称计算机考试,晋中市初中级职称评审不必再考外语和计算机
  7. 双波段红外火焰探测器
  8. MSP430F149定时器TA总结
  9. 软件测试|如何用Python绘制雷达图
  10. 第一篇 Nosql讲解之Redis,Memchche,MongoDb的区别