python3 OpenCv 图像和原始字节之间的转换

1.概念

(1).一个字节能表示0-255的整数,一个像素通常由每个通道的一个字节表示.

(2).一个OpenCV图像时.array类型的二位或者三维数组.8位的灰度图像是一个含有字节值的二维数组.一个24位的BGR图像是一个三维数组,它也包含了字节值.

2.代码      其他的信息都在注释里

import cv2 as cv
import numpy
import os
img=cv.imread('timg.jpg')
#生成一个120,000字节的随机字节
#一个像素是一个字节,8位
randomByteArray=bytearray(os.urandom(120000))
#print(randomByteArray)
#转换成numpy数组
flatNumpyArray=numpy.array(randomByteArray)
# print(flatNumpyArray)
#转换成400*300像素  数组 300行*400列  所以图片长点
img=flatNumpyArray.reshape(300,400)
print(img.shape)
#写出文件
cv.imwrite('randomGray.jpg',img)
#转换成100*400的有色图片 数组 400行*100列 3个通道 所以图片宽点
img=flatNumpyArray.reshape(400,100,3)
#写出文件
cv.imwrite('randomColor.jpg',img)

 3.注意

使用以下代码能更高效的生成随机numpy数组  上文使用的os.urandom()函数有助于展示原始字节的转换

numpy.random.randint(0,256,120000).reshape(300,400)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值