制作海思.y文件
时间:2020-05-25
本文章向大家介绍制作海思.y文件,主要包括制作海思.y文件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、说明
查阅网上的一些资料,了解到.y文件就是YUV格式的文件,参考网上的一些介绍,自己使用python制作出了.y文件。
二、方法
1、工具准备
准备python、opencv-python(即cv2)、numpy、需要转换的图像(.bmp,.jpg,.png等常见格式都可以)
2、思路
这里的.y文件实际上就是将图像Y、U、V通道的数据以二进制形式连续存储的。
如何获取Y 、U、 V通道的数据呢?
opencv提供了一个BGR色彩空间转换到YUV色彩空间的方法:cv2.cvtcolor(src,cv2.COLOR_BGR2YUV)
如何获取YUV单个通道的数据呢?opencv提供了一个分离通道的方法:cv2.split(src)
3、代码实现
import cv2 import numpy as np def rgb2yuv(): src = './image/000001.jpg' dst = './image/000001.y' bgr = cv2.imread(src) yuv = cv2.cvtColor(bgr,cv2.COLOR_BGR2YUV) y, u, v = cv2.split(yuv) height = yuv.shape[0] width = yuv.shape[1] with open(dst,'wb') as fp: for i in range(height): for j in range(width): fp.write(y[i,j]) for i in range(height): for j in range(width): fp.write(u[i,j]) for i in range(height): for j in range(width): fp.write(v[i, j]) def show_yuv(): src = './image/000001.y' fp = open(src,'rb') yuv = np.frombuffer(fp.read(),dtype=np.uint8) fp.close() y = yuv[0:500*420] u = yuv[500*420:500*420*2] v = yuv[500*420*2:500*420*3] reshaped_y = y.reshape(500,420) reshaped_u = u.reshape(500,420) reshaped_v = v.reshape(500,420) cv2.imshow('y',reshaped_y) cv2.imshow('u',reshaped_u) cv2.imshow('v',reshaped_v) yuv=cv2.merge((reshaped_y,reshaped_u,reshaped_v)) cv2.imshow('yuv',yuv) bgr=cv2.cvtColor(yuv,cv2.cv2.COLOR_YUV2BGR) cv2.imshow('bgr',bgr) cv2.waitKey() cv2.destroyAllWindows() if __name__ == '__main__': rgb2yuv() show_yuv()
4、效果
原文地址:https://www.cnblogs.com/pclx/p/12957600.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CF--思维练习--CodeForces - 221C-H - Little Elephant and Problem (思维)
- CF--思维练习--CodeForces - 219C Color Stripe (思维)
- 疯子的算法总结(六) 简单排序总 选择排序+插入排序+比较排序+冒泡排序
- C语言基础知识总结
- CF思维联系--CodeForces - 218C E - Ice Skating (并查集)
- 数组及字符串相关知识
- C++循环结构
- C++条件分支结构
- USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers
- 数学--数论--HDU--5878 Count Two Three 2016 ACM/ICPC Asia Regional Qingdao Online 1001
- ACM-ICPC 2019 山东省省赛D Game on a Graph
- 数学--数论--HDU6919 Senior PanⅡ【2017多校第九场】
- 数学--数论--Alice and Bob (CodeForces - 346A )推导
- ACM-ICPC 2019 山东省省赛 M Sekiro
- 数学--数论--HDU2136 Largest prime factor 线性筛法变形