赞
踩
本文提供了实现OpenMV串口发送图片,PC接收并保存的代码,全部使用python编程,已验证通过。
程序运行流程为:
import sensor
import image
import ustruct
import pyb
from pyb import Pin
# 初始化相机
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.VGA) # 分辨率可以修改为QQVGA、QVGA等
sensor.skip_frames(time=500)
# 初始化串口
uart = pyb.UART(3, 921600) # 选择合适的串口号和波特率
# 初始化I/O
p_in = Pin('P9', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻
# value = p_in.value() # get value, 0 or 1#读入p_in引脚的值
# 捕获并发送图像
def capture_and_send_image():
# 捕获图像
img = sensor.snapshot()
# 将图像转换为JPEG格式
img_compressed = img.compress(quality=50) #质量可以修改为 10 ~ 90
# 计算图像大小
size = ustruct.pack("<L", len(img_compressed))
# 发送图像大小和数据
uart.write(size)
uart.write(img_compressed)
# 等待接收到确认信号
while uart.any() == 0:
pass
# 接收确认信号
confirmation = uart.read(1)
# 如果接收到的确认信号为 "#"
if confirmation == b'#':
# 停止发送图像
while uart.any():
uart.readchar()
# 发送停止信号 "#"
uart.write(b'#')
# 主循环
while True:
capture_and_send_image() # 捕获并发送图片
import serial
import struct
# 打开串口
ser = serial.Serial('COM1', 921600) # 将 COM1 替换为你的串口号和相应的波特率
# 接收图像并保存
def receive_and_save_image(output_path):
# 读取图像大小
size_data = ser.read(4)
size = struct.unpack("<L", size_data)[0]
# 读取图像数据
image_data = ser.read(size)
# 保存图像
with open(output_path, 'wb') as file:
file.write(image_data)
# 发送确认信号 "#"
ser.write(b'#')
# 接收停止信号
stop_signal = ser.read(1)
if stop_signal == b'#':
return True
else:
return False
# 图像保存路径
output_image_path = 'received_image.jpg'
# 循环接收并保存图像
while True:
if receive_and_save_image(output_image_path):
break
# 关闭串口
ser.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。