IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 使用Python将OV7725的RGB565图像数据转换为jpg图像 -> 正文阅读

[Python知识库]使用Python将OV7725的RGB565图像数据转换为jpg图像

第一步,在单片机上添加如下代码

?在读取摄像头数据的时候,加入下面这段代码

UART_Send_Data(UART4,color1);//通过串口发送RGB565的高八位
UART_Send_Data(UART4,color2);//通过串口发送RGB565的低八位

第二步,使用串口调试软件,接收数据

注意需要打开HEX显示

一共会接收320*240*2字节数据,速度会有点慢,接收速度根据波特率大小

第三步,将接收的数据保存为文件

我这里建议,手动复制。

首先在D盘下新建一个txt文件,并命名为1.txt

?然后串口调试软件接收的数据,复制刚才新建的1.txt文件文件中,保存文件

第四步,新建Python程序并输入如下内容

from PIL import Image,ImageDraw


#定义图像大小为320*240
w = 320     #宽
h = 240     #高
#源文件路径,可以根据自己的情况进行修改
FileAdd = "D:\\1.txt"
#用于转换的
HEX = {}
RGB = []

#十六进制字符转数字
def Hex_To_Dec(hex):
    if hex == '0':
        re = 0
    elif hex == '1':
        re = 1
    elif hex == '2':
        re = 2
    elif hex == '3':
        re = 3
    elif hex == '4':
        re = 4
    elif hex == '5':
        re = 5
    elif hex == '6':
        re = 6
    elif hex == '7':
        re = 7
    elif hex == '8':
        re = 8
    elif hex == '9':
        re = 9
    elif hex == 'A':
        re = 10
    elif hex == 'B':
        re = 11
    elif hex == 'C':
        re = 12
    elif hex == 'D':
        re = 13
    elif hex == 'E':
        re = 14
    elif hex == 'F':
        re = 15
    else :
        return (100)
    return (re)
#main()
if __name__ == "__main__":
    f = open(FileAdd,encoding = "utf-8")#打开文件
    print("正在合成来自" + FileAdd + "的图像数据,合成为" + str(w) + "*" + str(h) + "的图像")
    x = 0
    z = 0
    for x in range(w * h * 60):#将文本型十六进制,转为数值型十六进制
        f.seek(z+0,0)
        f1 = f.read(1)
        f.seek(z+1,0)
        f2 = f.read(1)
        f.seek(z+3,0)
        f3 = f.read(1)
        f.seek(z+4,0)
        f4 = f.read(1)
        z = z + 6
        HEX[x] = ((Hex_To_Dec(f1) << 12) + (Hex_To_Dec(f2) << 8) + (Hex_To_Dec(f3) << 4) + Hex_To_Dec(f4))
        if z >= (w * h * 6):
            break
    f.close()#关闭文件
    x = 0
    for x in range(len(HEX)):#将RGB565转为RGB888
        r = (((HEX[x] & 0xF800) >> 8))
        g = (((HEX[x] & 0x7E0 ) >> 3))
        b = (((HEX[x] & 0x1F) << 3))
        rgb = (r, g, b)
        RGB.append(rgb)
   
    #print(RGB)
    #print(HEX)

    image = Image.new('RGB', (w, h), (255, 255, 255))#创建新图片对象
 
    draw = ImageDraw.Draw(image)# 创建Draw对象用于绘制新图:
 
    x = 0
    y = 0
    i = 0

    for y in range(h):# 填充每个像素并对对应像素填上RGB值:
       for x in range(w):
        draw.point((x, y), fill=RGB[i])
        i = i + 1
         
    image.save('D:\\2.jpeg', 'jpeg')#将转换后的图像保存到D盘中
    image.show()#查看图像

第五步,开始运行Python程序

之后Python会读取1.txt中内容,把它转换成图像并自动打开图像

我的目前ov7725不在身边,所以显示出来的图像是空白的。

将保存刚才处理过的图像保存到D盘中

?

补充:Python将会用到PIL库,在使用这个程序之前,请添加此库,否则将会报错

添加PIL库请参考如下方法

win+r,输入cmd,回车

?之后会输入如下内容

pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pillow

?然后回车

?显示Successfully,就表示安装成功了

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:53:29  更:2022-09-24 20:54:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:43:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码