opencv把图片转换成二进制_Python+OpenCV实现将图像转换为二进制格式

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

发布时间:2020-09-20 20:30:58

来源:脚本之家

阅读:68

作者:大蛇王

在学习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实现将图像转换为二进制格式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持亿速云。

你可能感兴趣的:(opencv把图片转换成二进制)