HumansXドキュメントセンター 公式サイトへ ↗

実験7_ビジョン認識 – ハフ変換による円検出

実験の目的:

  1. ハフ変換に基づく円検出を行い、エッジ検出と勾配情報を用いて円形の輪郭候補を探索できるようになります。

  2. 円を認識した後、検出した円とその中心をランダムな色でマークします。

応用シーン

マシンビジョンにおける円形物体の検出と位置特定は、産業オートメーションでの部品認識、ロボットナビゲーションでのランドマーク検出、教育分野でのコンピュータビジョンの授業デモなどによく用いられます。

機能要件:

円を検出し、認識結果をマークします。

ハードウェアの準備:

AIオフラインビジョンモジュール(K210)* 1、Type-C データケーブル * 1;

回路接続:

ハードウェアモジュール

ヒント:AIビジョンモジュールの基本的な使い方に慣れておくことを強く推奨します。

AIビジョンモジュールの基本的な使い方

実際の配線

下図のように、Type-C データケーブルで K210 ビジョンモジュールをPCに接続します:

ソフトウェア設計

設計フロー

プロジェクトのダウンロード

ソースコードのリンク:(HumansX サポートより提供)

プログラムコード

コアコード:

# 这个例程展示如何进行圆形检测,将检测到的圆使用程序中的colors随机色框出
# 并使用随机色画出当前圆的圆心
# Date: 2025-10-28

import sensor, image, time, lcd, random

# 定义颜色列表 - 至少包含红、绿、蓝、黄、紫
colors = [
    (255, 0, 0),    # 红色
    (0, 255, 0),    # 绿色
    (0, 0, 255),    # 蓝色
    (255, 255, 0),  # 黄色
    (255, 0, 255),  # 紫色
    # 可以继续添加更多颜色...
    (0, 255, 255),  # 青色
    (255, 165, 0),  # 橙色
    (128, 0, 128)   # 深紫色
]

lcd.init()                          # Init lcd display
lcd.clear(lcd.RED)                  # Clear lcd screen.

sensor.reset()                      # 复位并初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 设置摄像头输出格式为 RGB565(也可以是GRAYSCALE),GRAYSCALE运行速度更快
sensor.set_framesize(sensor.QQVGA)  # 设置摄像头输出大小为 QQVGA (160x120)
#sensor.set_framesize(sensor.QVGA)  # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 2000)     # 跳过2000帧
clock = time.clock()                # 创建一个clock对象,用来计算帧率

while(True):
    # 拍照,获取一张图像,并进行矫正
    img = sensor.snapshot().lens_corr(1.8)

    # 进行圆形检测,并绘制出圆形区域
    for c in img.find_circles(threshold = 2000, x_margin = 10, y_margin = 10, r_margin = 10,
            r_min = 2, r_max = 100, r_step = 2):
        # 从颜色列表中随机选择一个颜色
        random_color = random.choice(colors)

        # 使用随机颜色绘制圆形
        img.draw_circle(c.x(), c.y(), c.r(), color = random_color, thickness = 4, fill = False)

        # 可选:在圆心处画一个小点,便于识别圆心
        img.draw_circle(c.x(), c.y(), 2, color = random_color, thickness = 2, fill = True)

    lcd.display(img)

操作手順:

  1. プログラムをダウンロードして実行します。(1)CanMV IDE で detect_circle.py を開きます。

(2)接続アイコンをクリックしてポート番号(AIモジュール接続後にシステムが認識したポート番号)を選択し、詳細設定で Mode-3 を選択して OK ボタンをクリックします。

(3)矢印ボタンをクリックしてオンライン実行します。

(4)円形の物体をAIビジョンモジュールの取得領域に置き、認識結果を確認します。

実験結果

AIビジョンモジュールが円形の領域を捉えると、ランダムな色の枠で円を描き、現在の円の中心もランダムな色で描画します。

技術サポート

資料のダウンロード・技術サポートについては、HumansX株式会社までお問い合わせください。