当前位置:   article > 正文

K210巡线循迹识别最大色块,发送坐标巡线_k210 巡线

k210 巡线

 前言:

计划使用k210给巡线,所以在学k210,学的很浅,有不对的地方欢迎指出,这里我其实是作为一个笔记

这份代码烧录MaixHub对应k210的固件即可

实物及效果:

巡线

摄像头初始化:

  1. sensor.reset()
  2. sensor.set_pixformat(sensor.RGB565)
  3. sensor.set_framesize(sensor.HQVGA)#摄像头将会输出分辨率为 240x160 像素的图像
  4. sensor.skip_frames(time=2000)
  5. sensor.set_vflip(1)#设置摄像头后置模式,即所见即所得

串口通信:

后续总的代码中串口通信k210发送的变量x的是ASCII码,串口助手直接接收会得到乱码

  1. fm.register(6, fm.fpioa.UART1_RX, force=True)
  2. fm.register(7, fm.fpioa.UART1_TX, force=True)
  3. uart = UART(UART.UART1, 115200, read_buf_len=4096)

找出最大色块:

  1. blobs_1 = img.find_blobs(thresholds_1, pixels_threshold=100, area_threshold=100)
  2. # 如果找到黑色色块,则计算中心位置并向串口发送数据
  3. if blobs_1:
  4. # 找到面积最大的一个黑色色块
  5. max_blob = max(blobs_1, key=lambda b: b.pixels())

K210的代码:

基本每一句都有注释。

  1. import sensor, image, time, lcd
  2. from machine import UART
  3. from fpioa_manager import fm
  4. # 初始化摄像头和串口
  5. sensor.reset()
  6. sensor.set_pixformat(sensor.RGB565)
  7. sensor.set_framesize(sensor.HQVGA)
  8. sensor.skip_frames(time=2000)
  9. sensor.set_vflip(1)#设置摄像头后置模式,即所见即所得
  10. lcd.init(freq=15000000)
  11. fm.register(6, fm.fpioa.UART1_RX, force=True)
  12. fm.register(7, fm.fpioa.UART1_TX, force=True)
  13. uart = UART(UART.UART1, 115200, read_buf_len=4096)
  14. # 定义阈值和颜色范围
  15. thresholds_1 = [(0, 38, -60, 111, -76, 97)]
  16. while True:
  17. img = sensor.snapshot()#使用摄像机拍摄一张图片并返回给img后续进行操作
  18. lcd.display(img) # 将图像用LCD显示
  19. # 查找所有黑色色块 area_threshold是过滤小的,自己可以改 pixels_threshold像素的最小数量
  20. blobs_1 = img.find_blobs(thresholds_1, pixels_threshold=100, area_threshold=100)
  21. # 如果找到黑色色块,则计算中心位置并向串口发送数据
  22. if blobs_1:
  23. # 找到面积最大的一个黑色色块
  24. max_blob = max(blobs_1, key=lambda b: b.pixels())
  25. # 绘制矩形框
  26. img.draw_rectangle(max_blob.rect())
  27. #中心点XY
  28. img.draw_cross(max_blob.cx(), max_blob.cy())
  29. # 计算中心位置并向串口发送数据
  30. x = max_blob.cx()
  31. y = max_blob.cy()
  32. data = bytearray([0xb3,0xb3,x,y,0x0c,0x0d,0x0a]) # 要发送的数据,对应串口接收中断需要设置头尾判断
  33. uart.write(data) # 发送数据
  34. print(x, y)
  35. # lcd.rotation(2)
  36. lcd.display(img) # 将img,也就是那帧图像用lcd显示

                                                                                            下一次会附上stm32通信的代码

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号