失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 海康摄像头 海思AI芯片(Hi35XX): 图像jpg转.bgr

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

时间:2020-03-02 05:53:48

相关推荐

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

前言

把一张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 :.05.12import osimport cv2from 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》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。