Python+OpenCV实现将图像转换为二进制格式


Posted in Python onJanuary 09, 2020

在学习tensorflow的过程中,有一个问题,tensorflow在训练的过程中读取的是二进制图像数据库文件,而不是图像文件,因此

在进行训练、测试之前需要将图像文件转换为二进制格式。

下面是我在ubuntu中使用python+OpenCV读取图像并转换为二进制格式文件的代码。

#coding=utf-8
'''
Created on 2016年3月24日
使用Opencv读取图像将其保存为二进制格式文件,再读取该二进制文件,转换为图像进行显示
@author: hanchao
'''
import cv2
import numpy as np
import struct

image = cv2.imread("test.jpg")
#imageClone = np.zeros((image.shape[0],image.shape[1],1),np.uint8)

#image.shape[0]为rows
#image.shape[1]为cols
#image.shape[2]为channels
#image.shape = (480,640,3)
rows = image.shape[0]
cols = image.shape[1]
channels = image.shape[2]
#把图像转换为二进制文件
#python写二进制文件,f = open('name','wb')
#只有wb才是写二进制文件
fileSave = open('patch.bin','wb')
for step in range(0,rows):
  for step2 in range(0,cols):
    fileSave.write(image[step,step2,2])
for step in range(0,rows):
  for step2 in range(0,cols):
    fileSave.write(image[step,step2,1])
for step in range(0,rows):
  for step2 in range(0,cols):
    fileSave.write(image[step,step2,0])
fileSave.close()
    
#把二进制转换为图像并显示
#python读取二进制文件,用rb
#f.read(n)中n是需要读取的字节数,读取后需要进行解码,使用struct.unpack("B",fileReader.read(1))函数
#其中“B”为无符号整数,占一个字节,“b”为有符号整数,占1个字节
#“c”为char类型,占一个字节
#“i”为int类型,占四个字节,I为有符号整形,占4个字节
#“h”、“H”为short类型,占四个字节,分别对应有符号、无符号
#“l”、“L”为long类型,占四个字节,分别对应有符号、无符号
fileReader = open('patch.bin','rb')
imageRead = np.zeros(image.shape,np.uint8)
for step in range(0,rows):
  for step2 in range(0,cols):
    a = struct.unpack("B",fileReader.read(1))
    imageRead[step,step2,2] = a[0]
for step in range(0,rows):
  for step2 in range(0,cols):
    a = struct.unpack("b",fileReader.read(1))
    imageRead[step,step2,1] = a[0]
for step in range(0,rows):
  for step2 in range(0,cols):
    a = struct.unpack("b",fileReader.read(1))
    imageRead[step,step2,0] = a[0]
    
fileReader.close()
cv2.imshow("source",image)
cv2.imshow("read",imageRead)
cv2.waitKey(0)

以上这篇Python+OpenCV实现将图像转换为二进制格式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
Python计算回文数的方法
Mar 11 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
用python实现的线程池实例代码
Jan 06 Python
Python IDLE清空窗口的实例
Jun 25 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
对python中的高效迭代器函数详解
Oct 18 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
tensorflow 查看梯度方式
Feb 04 Python
Python3监控疫情的完整代码
Feb 20 Python
PyMongo 查询数据的实现
Jun 28 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 #Python
python读取raw binary图片并提取统计信息的实例
Jan 09 #Python
Flask 上传自定义头像的实例详解
Jan 09 #Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 #Python
python中如何使用insert函数
Jan 09 #Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 #Python
python 解决flask 图片在线浏览或者直接下载的问题
Jan 09 #Python
You might like
php 进度条实现代码
2009/03/10 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
express 项目分层实践详解
2018/12/10 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
Python中的ceil()方法使用教程
2015/05/14 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
python线程优先级队列知识点总结
2021/02/28 Python
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
怎样声明接口
2014/09/19 面试题
学期自我鉴定
2013/11/04 职场文书
开学季活动策划方案
2014/02/28 职场文书
安全施工标语
2014/06/07 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
家长学校教学计划
2015/01/19 职场文书
求职自我评价范文
2015/03/09 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
电力工程合作意向书
2015/05/11 职场文书
歌舞青春观后感
2015/06/10 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL