# 引入cv庫
import cv2
import os
import numpy as np
#定義函數讀取圖片位置 提取數據 讀取數據
def rgb888_to_rgb565(r,g,b):
r1 = (r >> 3) << 11
g1 = (g >> 2) << 5
b1 = (b >> 3)
c = r1|g1|b1
# 對調高低字節
c_h = (c << 8)&0xFF00
c_l = (c >> 8)&0x00FF
return np.int16(c_h|c_l)
def get_rgb565_data(file):
#分離文件和後綴
p = os.path.splitext(file)
file_name = p[0]+".bin"
f = open(file_name,'wb')
#IMREAD_UNCHANGED 讀取RGBA 不設置默認讀取RGB
im = cv2.imread(file,cv2.IMREAD_UNCHANGED)
h,w,ch = im.shape
if (ch <= 2):
print("pic_error")
f.close()
return
print("h = "+str(h))
print("w = " + str(w))
print("ch = " + str(ch))
for hh in range(0,h):
for ww in range(0,w):
b = im[hh][ww][0]
g = im[hh][ww][1]
r = im[hh][ww][2]
c = rgb888_to_rgb565(r,g,b)
f.write((c))
f.close()
# 顯示目錄文件
addr = "./"
list = os.listdir(addr)
print(len(list))
if __name__ == "__main__":
for i in range(0,len(list)):
p = os.path.splitext(list[i])
if (p[1] == ".bmp"):
print(list[i]+'\n')
get_rgb565_data(addr+list[i])
python處理圖片方便是方便,但是效率不如C。
打包py爲exe.
需要安裝pywin32 pyinstaller.