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生成指定长度的随机数密码
Jan 23 Python
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
Python利用多进程将大量数据放入有限内存的教程
Apr 01 Python
python中import reload __import__的区别详解
Oct 16 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
Python3分析处理声音数据的例子
Aug 27 Python
打包PyQt5应用时的注意事项
Feb 14 Python
python如何实现递归转非递归
Feb 25 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
PHP操作Memcache实例介绍
2013/06/14 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
js实现查询商品案例
2020/07/22 Javascript
python实现html转ubb代码(html2ubb)
2014/07/03 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python 定时修改数据库的示例代码
2018/04/08 Python
详解python中@的用法
2019/03/27 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
python爬虫之自制英汉字典
2019/06/24 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
印度购物网站:TATA CLiQ
2017/11/23 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
智乐游戏测试笔试题
2014/05/21 面试题
机电专业体育教师求职信
2013/09/21 职场文书
工厂搬迁方案
2014/05/11 职场文书
水电站项目建议书
2014/05/12 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers