通过OpenMV来找靶心

通过OpenMV来找靶心

OpenMV可以识别下面这张图,并且能获取靶心的坐标。
在这里插入图片描述

将获取的靶心的坐标可以通过串口发送给下位机单片机,进行下一步的操作,如下是OpenMV的代码:

import sensor, image, time
from pyb import UART
import json

red_threshold   = (0, 100, 32, 127, -128, 54)
def find_max_circle(circles):
    max_size = 0
    for circle in circles:
        if circle.r()>max_size:
            max_circle = circle
            max_size = circle.r()
            return max_circle

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False) # must be turned off for color tracking
sensor.set_auto_whitebal(False) # must be turned off for color tracking
clock = time.clock()
#sensor.set_hmirror(True)    #水平方向翻转
#sensor.set_vflip(True)  #垂直方向翻转
uart = UART(3, 115200)

uart.init(115200, bits = 8, parity = None, stop = 1)     #8位数据位,无校验位, 1位停止位

while(True):
    clock.tick()
    img = sensor.snapshot().lens_corr(1.8)
    circles = img.find_circles(x_stride=4, y_stride=1, threshold = 4000, x_margin = 20, y_margin = 20, r_margin =50,
            r_min =6, r_max = 100, r_step = 2)
    if circles:
        max_circle = find_max_circle(circles)   #找到最大的圆
        area = (max_circle.x()-max_circle.r(), max_circle.y()-max_circle.r(), 2*max_circle.r(), 2*max_circle.r())
        img.draw_rectangle(area, color = (250, 0, 0))
        blob = img.find_blobs([red_threshold], roi=area)
        if blob:
        #如果找到了目标颜色
            FH = bytearray([0xb3,0xb4])
            uart.write(FH)
            for b in blob:
                img.draw_rectangle(b.rect(), color = (0,0,250))
                img.draw_edges(b.min_corners(), color=(0,255,0))
                img.draw_cross(b.cx(),b.cy())
                print(b.cx(),b.cy()-10)
                x = b.cx()      #色块的外框中心x坐标
                y = b.cy()      #色块的外框中心y坐标

                data = bytearray([x, y])   #将x,y的值转为二进制数
                uart.write(data)    #通过串口发送出去

                end = bytearray([0x01,0x01,0xb5,0x06])
                uart.write(end)

也可以自定义帧格式,实现通信。

OpenMV是一种低成本、开源的嵌入式计算机视觉平台,可以用于图像处理和机器视觉应用。根据引用中的描述,OpenMV识别圆环的方法是采用电磁辅助入环的方式。具体来说,通过电磁归一化后,对入环的特殊位置进行标记。在检测到入环时机后,摄像头对圆环进行布线,然后继续跑。这种方法避免了单纯使用摄像头进行圆环识别的复杂算法和标识位的问题。引用中提到,OpenMV识别圆环的算法在三岔路口和圆环路线方面还存在不足和问题,需要进一步改进。引用中提到,调整threshold和r_min、r_max这两个参数可以控制圆的可能性和大小,从而进行圆环的识别和去除一些圆的操作。综上所述,OpenMV识别圆环的方法是通过电磁辅助入环,并结合算法和参数调整进行圆环的识别和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [智能车竞赛技术报告 | 智能车视觉 - 三江学院 - 识别不别](https://blog.csdn.net/zhuoqingjoking97298/article/details/120147138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [openmv学习十二:圆形检测](https://blog.csdn.net/moshanghuaw/article/details/122179309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值