已经在研一度过快3个月了,研究生学习跟本科学习还是有很大区别的,要善于自己找资料善于自己总结,因此我也决定从现在开始时不时的写写博客总结后面每段时间遇到的各种困难以及解决方法,为以后工作积累经验也方便以后查阅。
这是我第一篇博客,之前都是在做关于树莓派和opencv的项目,前段时间老师也是给了我一个新项目的思路,也是要基于视觉处理的,但因为21年电赛刚过有些学弟在比赛时都用到了openmv,所以我也想试试用openmv来处理处理手上这个项目,也顺便重新认识认识老朋友stm32。
言归正传,基于openmv的图像处理可以说是非常简单的,官方给了各种库,但凡好好看看例子都能会用,但是openmv的引脚太少了以至于能实现的功能太单一,所以这时候openmv也就只能作为传感器,大多数功能还得靠stm32,既然openmv作为传感器,所以openmv与stm32之间必须实现通信,方式很多很多,我选择了最基础的串口通信。
虽然本科也干了不少STM32与各类传感器的通信,但这次依碰到一些小麻烦,在网上查了不少资料,但怎么说了要么就是给的代码不全不知道上下的联系,要么就是单纯在那讲STM32的串口通信跟题目根本不搭噶。
废话少说,直接边上代码边总结。(之前记得将openmv的P4接到stm32的PA10,P5接到PA9)
关于openmv的代码:
# Blob Detection and uart transport
import sensor, image, time,math
from pyb import UART
import json
# For color tracking to work really well you should ideally be in a very, very,
# very, controlled enviroment where the lighting is constant...
yellow_threshold = (65, 100, -10, 6, 24, 51)
# You may need to tweak the above settings for tracking green things...
# Select an area in the Framebuffer to copy the color settings.
sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # use RGB565.
sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
sensor.skip_frames(10) # Let new settings take affect.
sensor.set_auto_whitebal(False) # turn this off.
clock = time.clock() # Tracks FPS.
uart = UART(3, 115200)
def find_max(blobs):
max_size=0
for blob in blobs:
if blob.pixels() > max_size:
max_blob=blob
max_size = blob.pixels()
return max_blob
while(True):
img = sensor.snapshot() # Take a picture and