【Python】【OpenCV】【NumPy】图像和原始字节的转换

天空闲话  金牌会员 | 2024-1-1 09:07:46 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 895|帖子 895|积分 2685

学习完基础的图像算法,开始接触OpenCV学习:
灰度图中,一个像素点上的灰度级需要一个字节(byte,2^8,8 bit)进行存储,此时的灰度图是二维的。
而当我们需要转换为彩色图时,即三维,便会产生颜色通道(Channel),这个时候,一个像素点上的灰度级便会需要三个字节来进行存储。
可以借助笛卡尔坐标系来帮助理解:

 
我们开始实操:
1、生成一个随机的原始字节;
2、将随机字节转换为一维数组;
3、转换为灰度图(即二维数组)然后保存;
4、转换为彩色图(即三维数组)然后保存;
 Code:
  1. 1 import cv2
  2. 2 import numpy
  3. 3 import os
  4. 4
  5. 5 # 生成随机字符,然后转换成字节数组
  6. 6 rb = bytearray(os.urandom(12))
  7. 7 print(rb)
  8. 8
  9. 9 # 将字节数组转换成numpy数组
  10. 10 fn = numpy.array(rb)
  11. 11 print(fn)
  12. 12
  13. 13 # 转换成灰度图,即二维数组
  14. 14 gi = fn.reshape(3, 4)
  15. 15 print(gi)
  16. 16 # cv2.imwrite('2D.png', gi)
  17. 17
  18. 18 # 转换成彩色图,即三维数组,此时的展示的面是 xy 构成的
  19. 19 bi = fn.reshape(1, 4, 3)
  20. 20 print(bi)
  21. 21 # cv2.imwrite('3D_xy.png', bi)
  22. 22
  23. 23 # 此时的展示的面是 yz 构成的
  24. 24 yz = numpy.uint8(bi[0, :, :])
  25. 25 # cv2.imwrite('3D_yz.png', yz)
  26. 26 print(yz)
复制代码
 

 至此就完成了原始字节转换成图像的步骤。
 
参考书籍:OpenCV 4计算机视觉:Python语言实现

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表