python 读取png图片 透明度

import matplotlib.pyplot as plt # plt 用于显示图片
import numpy as np
import cv2

img = cv2.imread("c:/456.png",cv2.IMREAD_UNCHANGED)
h,w,g = (img.shape)
print(h)
f = open("c:/111.bin",'wb')
a = np.array(img)
print(np.shape(img));
#print(img)
print(img[0][0][0])

for j in range(0,h):
    for i in range(0,w):
        b = a[j][i][3]
        print(type(b))
        f.write(b)
f.close()

plt.imshow(img) # 显示图片
plt.axis('on') # 不显示坐标轴
plt.show()

测试和C语言写的脚本读取的透明度一模一样。

cv2.IMREAD_UNCHANGED  能读取 BGRA四个通道,如果不加默认是只读取RGB

Python操作文件也很简单。直接open write  close.轻便不少。

总体思路:

openCV读取PNG读取,读取出来的信息可以用shape读取出基本上的大小信息和通道个数,

出来的数据像是一个三维数组。高度,宽度,元素信息块包含的数据个数(这个是四个值 BGRA

img[h][w][bgra]

重点要注意这个读取出来的数据格式是BGR

import matplotlib.pyplot as plt  # plt 用于显示图片
import numpy as np
import cv2

def rgb888_to_rgb565(r,g,b):
    aa = ((g>>5)&0x07)

    bb = ((r>>3)&0x1F)<<3
    cc = ((b>>3)&0x1F)<<8
    dd = ((g>>2)&0x07)<<13
    print(hex(aa))
    print(hex(bb))
    print(hex(cc))
    print(hex(dd))
    c = aa|bb|cc|dd
    h = (c & 0xFF00)>>8
    l = (c & 0x00FF)
    c = (l<<8)|(h)
    return np.uint16(c)

# opencv 读取图片
path = "C:\\NXP\\GUI-Guider-Projects\\ui_bp\\import\\"
img = cv2.imread("C:\\NXP\\GUI-Guider-Projects\\ui_bp\\import\\BAT2.png", cv2.IMREAD_UNCHANGED)
plt.imshow(img)  # 显示图片
# 获得图像信息
h, w, g = (img.shape)
print(h)
f = open(path+"/1.txt", 'w')
a = np.array(img)
print(np.shape(img))
# print(img)
print(img[0][0][0])

for j in range(0, h):

    for i in range(0, w):
        b = a[j][i][0]
        g = a[j][i][1]
        r = a[j][i][2]
        rgb565 = rgb888_to_rgb565(r,g,b);
        rgb565_h = rgb565>>8
        rgb565_l = rgb565 & 0xFF
        ap = a[j][i][3]
        print(hex(r),hex(g),hex(b),hex(rgb565))
        f.write(str(hex(rgb565_h)) + ",")
        f.write(str(hex(rgb565_l)) + ",")
        f.write(str(hex(ap)) + ",")
       # f.write(str(hex(r))+","+str(hex(g))+","+str(hex(b))+","+str(hex(ap))+",")
    f.write('\n')
f.close()


plt.axis('on')  # 不显示坐标轴
plt.show()





LVGL RGB565 数据 SWAP 像素交换。显示是对的,但是和官网的工具只转换出来的还是有点不对劲。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值