行空板K10 micropython 如何拍照保存?

2024-12-055900
行空板K10 micropython 如何拍照保存?

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
PY学习笔记
PY学习笔记
import camera
from microbmp import MicroBMP #https://github.com/jacklinquan/micropython-microbmp/blob/main/microbmp.py
# 将 RGB565 转换为 RGB888 的函数
def RGB565_to_RGB888_array(rgb565_array, length, rgb888_array):
for i in range(length):
rgb565 = rgb565_array[i]
# 提取 RGB565 中的颜色分量
red = (rgb565 >> 11) & 0x1F # 5 bits
green = (rgb565 >> 5) & 0x3F # 6 bits
blue = rgb565 & 0x1F # 5 bits
# 将颜色分量扩展到 8 位
r = (red << 3) | (red >> 2) # 5 bits to 8 bits
g = (green << 2) | (green >> 4) # 6 bits to 8 bits
b = (blue << 3) | (blue >> 2) # 5 bits to 8 bits
# 将结果存储到 RGB888 数组
rgb888_array[i * 3] = r
rgb888_array[i * 3 + 1] = g
rgb888_array[i * 3 + 2] = b
# 初始化摄像头
camera.init(0)
# 捕获一帧画面
buf = camera.capture()
# 创建 MicroBMP 实例
bmp = MicroBMP(width=640, height=480, depth=24)
# 将 RGB565 数据转换为 RGB888
rgb888_array = bytearray(bmp.DIB_w * bmp.DIB_h * 3) # 初始化 RGB888 格式的像素数据数组
RGB565_to_RGB888_array(buf, len(buf) // 2, rgb888_array)
# 将 RGB888 数据写入 MicroBMP 实例
for y in range(bmp.DIB_h):
for x in range(bmp.DIB_w):
idx = (y * bmp.DIB_w + x) * 3
bmp[x, y] = (rgb888_array[idx], rgb888_array[idx + 1], rgb888_array[idx + 2])
# 保存 BMP 文件
bmp.save("image.bmp")
试试这个
深邃蓝
深邃蓝
作者
回复PY学习笔记
再次测试,运行可以,就是非常慢,要几分钟时间。
有没有办法加快速度?
感谢大佬。
深邃蓝
深邃蓝
作者
代码早就发上面了啊
深邃蓝
深邃蓝
作者
回复PY学习笔记
您这代码,我早就测试过,不成功!
强烈建议"PY学习笔记"亲自测试再贴出来。
PY学习笔记
PY学习笔记回复深邃蓝
import camera
# 初始化摄像头
camera.init(0, format=camera.JPEG, fb_location=camera.PSRAM)
# 拍摄一张图片
buf = camera.capture() # 大小是640x480
# 保存图片到文件
with open("第一张图片.png", "wb") as f:
f.write(buf)
深邃蓝
深邃蓝
作者
以上代码不能运行,错误!
PY学习笔记
PY学习笔记回复深邃蓝
那代码给我一下我测试一下
深邃蓝
深邃蓝
作者
回复PY学习笔记
我检查过多次,是K10引脚,运行不成功,麻烦您也测试一下,不就知道了?
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
深邃蓝
深邃蓝
作者
import camera
camera.deinit() # 释放camera
try:
camera.init(0, d0=8, d1=10, d2=11, d3=9, d4=18, d5=16, d6=15, d7=6,
format=camera.JPEG, framesize=camera.FRAME_SVGA,
xclk_freq=camera.XCLK_10MHz,
href=5, vsync=4, reset=-1, pwdn=-1,
sioc=48, siod=47, xclk=7, pclk=17)
except Exception as e:
camera.deinit() # 释放camera
camera.init(0, d0=8, d1=10, d2=11, d3=9, d4=18, d5=16, d6=15, d7=6,
format=camera.JPEG, framesize=camera.FRAME_SVGA,
xclk_freq=camera.XCLK_10MHz,
href=5, vsync=4, reset=-1, pwdn=-1,
sioc=48, siod=47, xclk=7, pclk=17)#y2-d0
buf = camera.capture()
with open('1.jpg','wb') as f:
f.write(buf) print("拍照已完成")
camera.deinit() # 释放camera
#
[table=98%,rgb(250, 250, 250)]
[tr][td]#以上代码不能运行,错误![/td][/tr]
[/table]
深邃蓝
深邃蓝
作者
早就细细读了好多遍,但是唯独缺“micropython"拍照并保存的介绍,是“micropython拍照保存照片”不是图形化c语言。
应该是k10的bug!

木子呢 2024-12-06 04:57:34

看下官方教程:https://wiki.dfrobot.com.cn/_SKU ... 7%A9%BA%E6%9D%BFK10
深邃蓝
深邃蓝
作者
回复PY学习笔记
WARNING:root:Unexpected echo. Expected b'\r\n', got b'ES'
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x8 (TG1WDT_SYS_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
Saved PC:0x403764db
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3820,len:0x105c
load:0x403c9700,len:0x4
load:0x403c9704,len:0xbd8
load:0x403cc700,len:0x2e30
entry 0x403c989c
W (26) boot.esp32s3: PRO CPU has been reset by WDT.
W (26) boot.esp32s3: APP CPU has been reset by WDT.
- 没有更多了 -