想在一个纸箱里,然后顶部装固定白色光源,底部放可移动openmv,然后想得到openmv在纸箱底部的位置。
K
klt4
@klt4
0
声望
2
楼层
202
资料浏览
0
粉丝
0
关注
klt4 发布的帖子
-
我的openmv3,运行这段代码一秒左右后自动停止是怎么回事?
请在这里粘贴代码 ```import sensor, image, time from pyb import UART uart = UART(3, 9600) #设置为串口3、波特率为9600发送数据 thresholds = (235, 255) #设置监测色块阈值 sensor.reset() #摄像头初始化 sensor.set_pixformat(sensor.GRAYSCALE) #设置为灰度模式 sensor.set_framesize(sensor.QQVGA) #画幅为QQVGA即分辨率为160*120 sensor.skip_frames(time = 2000) #跳过起始画面,获取稳定图像 sensor.set_auto_gain(False) #在色块检测模式下关闭自动补光 sensor.set_auto_whitebal(False) #关闭白平衡 clock = time.clock() xPositionNow = 0 # 初始化各坐标值 yPositionNow = 0 xPositionLast = 0 yPositionLast = 0 imageSize = 128 while(True): clock.tick() img = sensor.snapshot() #获取当期所采集到的图像快照 # 设置色块阈值,具体数值情况可以通过OpenMVIDE中的阈值调整功能来得出 # 工具 → Mechine Vision → Threshold Editor # area_threshold面积阈值设置为100 ,如果色块被面积小于100,则会被过滤掉 # pixels_threshold 像素个数阈值,如果色块像素数量小于这个值,会被过滤掉 # merge 设置为True,合并所有重叠的寻找到的blob为一个色块 for blob in img.find_blobs([thresholds], pixels_threshold=100, area_threshold=100, merge=True): # 绘制相应的图形,方便我们测试的时候使用 img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) x = blob.cx() - (imageSize/2) y = (imageSize/2) - blob.cy() xPositionLast = xPositionNow yPositionLast = yPositionNow #在调试的时候为了使得像素点和坐标单位cm匹配所设置的数值 xPositionNow = x * 0.6 yPositionNow = y * 0.6-6 # 测试时打印出当前坐标 print(xPositionNow, yPositionNow, end = ',') # 通过串口将坐标数据发送给单片机处理,实际上发送的就是一段文本 uart.write('X:' + str(xPositionNow) + 'Y:' + str((-1)*yPositionNow) + ',') # 判断当前所在区域(A\B\C\D) if abs(xPositionNow) < 20 and abs(yPositionNow) < 20: uart.write('A\n') print('A') elif yPositionNow < -20 and yPositionNow < xPositionNow and (-1)*yPositionNow > xPositionNow: uart.write('B\n') print('B') elif xPositionNow > 20 and (-1)*yPositionNow < xPositionNow and yPositionNow < xPositionNow: uart.write('C\n') print('C') elif yPositionNow > 20 and xPositionNow < yPositionNow and (-1)*xPositionNow < yPositionNow: uart.write('D\n') print('D') else: uart.write('E\n') print('E') # 0.5s更新一下坐标数据 time.sleep(500)