esp32cam通过串口传递摄像头ov2640拍摄的图像

esp32cam初始化摄像头ov2640后就可以拍摄图像,但是esp32cam拍摄的图像需传送到电脑才能看到具体图像。(虽然esp32cam拍摄的图像可以保存到自带的SD卡中,但无法及时看到结果)

网上找到了一个程序,有esp32cam端arduino代码和电脑端python代码,esp32cam端在loop中循环读取电脑端通过串口发来的字符指令,根据不同的字符分别进行摄像头初始化、拍照、串口发送图像数据、关闭摄像头等操作。电脑端的程序通过串口发送初始化、拍照字符指令,并读取串口传递的图像数据。

程序链接地址:esp32cam_serial_camera ,目录中main.py通过串口发送操作指令字符、读取串口图像数据、保存图像文件。serialCamArduino初始化相机、拍照、发送图像数据。

需要注意的地方

1、esp32cam串口默认速率是115200,程序中将两端的串口速率设置在500000,本人的电脑在调测中出现arduino ide 无法连接esp32cam的串口情况,不得不都设置为115200;

2、本人的电脑和操作系统可能比较老旧,串口传递的较慢,还会出现类似阻塞的情况,main.py中为time.sleep(0.001)时经常无法读到数据,也不得不增大sleep时间。

原main.py是将获取的图像以jpg文件存在电脑中,为了更直观,本人在程序中增加了直接显示的功能,将图像显示在一个独立窗口中。

import cv2  在程序头部增加引用cv2库,没有的需要安装;
-------------------------------------------
img = take_a_photo(cam)
save_photo(img) 
在拍照和存文件后,增加如下
wimg = cv2.imdecode(np.frombuffer(img, dtype=np.uint8), cv2.IMREAD_COLOR) 将图像数据编码win_name = 'real_img' 
cv2.namedWindow(win_name, cv2.WINDOW_NORMAL)
cv2.imshow(win_name,wimg) 显示图像
cv2.waitKey() 等待键盘鼠标的操作,这里是任何键盘操作,或者直接用鼠标关闭窗口
cv2.destroyAllWindows()

这个程序主要意义是学习相关知识,实际上图像数据量较大,串口稳定性和速度都不太理想。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值