前言

把一张jpg图片转成bgr(注意顺序是bgr)二进制文件,最近在弄华为Hi3516DV300开发板上的一些深度学习的样例程序,换言之,35xx nnie SDK只支持BGR以及yuv格式的数据输入。那么当手头刚好只有jpeg/png等图片文件时,怎么来进行目标识别呢,一般的思路是用opencv来读取图片文件,然后再转换成BGR/YUV等格式,最后扔到NNIE模块来进行深度学习推理。

本篇讲解jpg转bgr,也就是它的输入文件不是普通的jpg,而是bgr格式的二进制文件,还别说,这样确实是大大节省了空间。一张3.8M的测试文件(test.jpg),转成二进制后为276K。本篇使用python来实现,网上大部分都是c/c++实现的,对于一个python用习惯并且用来验证结果,我觉得python转化更为习惯吧。

本代码仅面向学习海思35xx的各位。转化完不是标准bgr格式,由于Hi35xx的bgr分布不是标准格式,所以写了一点代码进行bgr与jpg格式图片互相转化,并逆向思维进行测试转化后的bgr。

代码部分

# -*- coding: UTF-8 -*-
# author: AnnSun
# date :2020.05.12import os
import cv2
from numpy import *
import numpy as npclass JPG2BGR_Solver(object):def __init__(self):self.img_size = 416  # save bgr size# jpj2bgr  converbgr=true 参数设置self.imgpath_jpg = r"pose_368.jpg"self.saveimg_bgr = r"pose_368.bgr"# testbgr  converbgr=false 参数设置self.jpeg_path = r"./BGR_img/double_roipooling_224_224.jpg"self.path = "./BGR_img/24_608x608.bgr""""海思nnie模型需要输入bgr 格式的图片,这个python脚本可以把jpg格式的图片转换成.bgr格式的图片"""def jpg2bgr(self):save_img_size = self.img_sizeimgpath = self.imgpathimg = cv2.imread(imgpath)if img is None:print("img is none")else:img = cv2.resize(img,(save_img_size,save_img_size))(B, G, R) = cv2.split(img)with open(saveimg,'wb')as fp:for i in range(save_img_size):for j in range(save_img_size):fp.write(B[i, j])print(B[i,j])for i in range(save_img_size):for j in range(save_img_size):fp.write(G[i, j])for i in range(save_img_size):for j in range(save_img_size):fp.write(R[i, j])print("save success")"""查看bgr文件内容并显示为图片"""def test_Hi_bgr(self):jpeg_path = self.jpeg_pathpath = self.pathimgsize = self.img_sizef = open(path, 'rb')src = cv2.imread(jpeg_path)src = cv2.resize(src, (imgsize, imgsize))print(src.shape)h = src.shape[0]w = src.shape[1]c = src.shape[2]print(f.name)(B, G, R) = cv2.split(src)data = f.read(imgsize*imgsize*3)for j in range(imgsize):for i in range(imgsize):B[j, i] = data[j*imgsize + i]G[j, i] = data[j*imgsize + i + imgsize*imgsize]R[j, i] = data[j*imgsize + i + imgsize*imgsize*2]newimg = cv2.merge([B, G, R])cv2.imshow("new", newimg)f.close()cv2.waitKey(0)if __name__ == '__main__':converbgr = truesolverObj = JPG2BGR_Solver()if (converbgr == true):solverObj.jpg2bgr()else:solverObj.test_Hi_bgr()

参考文章:海思AI芯片(Hi35XX): 图像jpg转.bgr

海康摄像头 海思AI芯片(Hi35XX): 图像jpg转.bgr相关推荐

  1. 海思AI芯片(Hi35XX): 图像jpg转.bgr

    前言 把一张jpg图片转成bgr(注意顺序是bgr)二进制文件,最近在弄华为Hi3516DV300开发板上的一些深度学习的样例程序,换言之,35xx nnie SDK只支持BGR以及yuv格式的数据输 ...

  2. 海思AI芯片(Hi35XX): 图像jpg转.bgr升级版

    https://blog.csdn.net/smf0504/article/details/106068342 我把上面这个老哥的代码改进了一下,小改进,备份下,免得丢了 主要是这个,self.img ...

  3. 海思AI芯片(Hi3519A/3559A)方案学习(一)资料以及术语介绍

    芯片系列介绍 海思AI芯片Hi35xx系列具体包括的型号Hi3559A V100, Hi3559C V100, Hi3519A V100, Hi3516C V500以及Hi3516D V300.下面要 ...

  4. 海康摄像头前端调用实时画面解决方案(无插件版开发)

    文章目录 前言 一.海康摄像头 二.尝试方案 1.方案1 2.方案2 3.方案3 总结 前言 项目中有一个需求,是需要把海康摄像机的实时画面在项目前端的页面中展示出来.本文的技术栈主要用到了vue3. ...

  5. 海思AI芯片(Hi3519A/3559A)方案学习(十四)JPEG图片转换成bgr文件

    原文:https://blog.csdn.net/avideointerfaces/article/details/89931156 前言 在系列文章海思AI芯片(Hi3519A/3559A)方案学习 ...

  6. 海思AI芯片(Hi3519A/3559A)方案学习(十七)开发板上运行yolo3模型的代码分析

    前言 前面的博客系列 已经介绍了如何将caffemodel转换成wk文件,如何将jpg文件转成bgr格式数据以及如何在PC上仿真模型推理等,基于这些基础,本文来结合代码分析如何在板子上推理yolov3 ...

  7. 华为海思AI芯片HI3516DV300上SSD代码的移植和优化

    前一段时间一直在做海思AI芯片 HI3516DV300上SSD代码的优化工作,这里总结一下优化的一些心得体会.之所以要对海思AI芯片 HI3516DV300上SSD代码做优化,是因为SSD有一部分是运 ...

  8. Java对接海康摄像头坑点总结

    一.背景 有一批AI摄像头需要部署到客户方,需要实现的功能:1.摄像头实时预览,摄像头安装在不同地点的内网环境,因此需要通过frpc服务器做内网摄像头的代理:2.摄像头smart事件,进入区域.离开区 ...

  9. 利用flask解析海康摄像头视频

    利用flask解析海康摄像头视频 利用flask解析海康摄像头和大华摄像头的视频 一.安装依赖包 二.获取海康摄像头视频流 三.将视频流输出到Web页面 四. 创建HTML模板文件 利用flask解析 ...

最新文章

  1. 多线程并发快速处理数据
  2. system 后门 php,php后门的编写
  3. 面向对象编程之:封装、继承、多态
  4. 调整latex表格_选择LaTeX还是Word的建议
  5. LeetCode 1647. 字符频次唯一的最小删除次数(贪心)
  6. 残疾人计算机高考试题,残疾人勇夺玉溪高考榜眼:想去清华学计算机
  7. MySQL系列(三)
  8. Python中的jquery PyQuery库使用小结
  9. 天正双击墙体不能编辑_20个天正CAD常备技巧,助你神速绘图!
  10. 【复习笔记】电分-第三章-电力系统潮流分析与计算
  11. Agilent/安捷伦N6705B直流电源分析仪
  12. antd-vue 划上表格内容显示气泡框及提示内容
  13. Rhythmbox乱码的解决办法
  14. Model of an Electric Arc for Circuit Analysis(翻译)
  15. 系统架构师论文-论软件架构的选择与应用
  16. Sonatype Nexus安装
  17. 浅谈企业建设网站的作用和好处
  18. 如何脱壳:PECompact 1.68 - 1.84 - Jeremy Collake [Overlay]
  19. SK海力士量产业界最高容量的移动端DRAM
  20. 修改element-ui-template 登录接口 api login

热门文章

  1. Cordova 本地项目创建方法
  2. (转)IIS7 配置ASP.NET 2.0, WCF, ASP.NET MVC
  3. 力挺2007年国内原创音乐届最权威大赛!
  4. [转]卓越科技回应所谓的最牛,最受歧视的招聘
  5. 指南--安装 NVU HTML 编辑器
  6. linux 文件夹换所属用户,Linux中账号管理之权限管理(下)
  7. C语言循环队列的实现方法,C语言循环队列(数组实现)
  8. 【学习笔记】利润中心会计初识
  9. 【转摘】如何得心应手的玩转Excel
  10. 采购订单单位与基本计量单位不一致问题案例