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

実験6-2_ビジョン認識 – 単一または複数物体の色の認識

実験の目的:

  1. 物体の色域範囲のパラメータ値を正しく変更できるようになります。

  2. 物体の色の認識方法を習得します。

  3. 複数の物体の色を認識できるようになります。

応用シーン

単色または複数色の物体の認識。

機能要件:

緑色の物体を認識し、認識結果を表示します。

ハードウェアの準備:

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

回路接続:

ハードウェアモジュール

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

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

実際の配線

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

ソフトウェア設計:

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

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

プログラムコード

コアコード:

'''
功能: 多种颜色识别
date: 2025-09-10
'''

import sensor
import image
import time
import lcd
from hiwonder import hw_key, hw_led , fill_light

#初始化LCD
lcd.init()
#以下是初始化传感器
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 100)
sensor.set_auto_gain(False)
sensor.set_auto_whitebal(False)
#帧率时钟
clock = time.clock()

#创建LED控制对象
led = hw_led()
#创建补光灯控制对象
f_led = fill_light()

#LED,补光灯开
led.led_onoff(1)    #LED开
led.led_onoff(0)    #LED关
f_led.fill_onoff(1) #补光灯开
time.sleep(0.5)  #延时0.5s

#方框参数
r = [(320//2)-(50//2), (240//2)-(50//2), 50, 50]

# 储存6种颜色的LAB阈值
color_thresholds = [
    (23, 52, -29, -9, -9, 7),       # Green
    #(34, 57, 18, 37, -24, 2),      # Red
    #(21,50,-7,8,-35,-11),          # Blue
    #(65, 78, -10, -5, 38, 50),     # Yellow
    #(20, 50, 17, 37, -34, -14),    # purple
]

color_strings = ['Green', 'Red', 'Blue', 'Yellow', 'purple']

print("Start Color Recognition...")

#loop
while True:
    #用于计算帧率的函数,这里表示开始计时
    clock.tick()
    #从传感器捕获一张图像
    img = sensor.snapshot()
    #遍历多种颜色
    for color_idx, threshold in enumerate(color_thresholds):
        #遍历图像中找到的颜色区块
        blobs = img.find_blobs([threshold], pixels_threshold=100, area_threshold=100, merge=True, margin=10)
        #是否找到
        if blobs:
            #画方框
            for blob in blobs:
                color_new = (255 , 255,255)
                if color_idx == 0 :
                    color_new = (255 , 0,0)
                elif color_idx == 1:
                    color_new = ( 0,255 ,0)
                elif color_idx == 2:
                    color_new = ( 0,0,255)
                img.draw_rectangle(blob.rect(), color=color_new,thickness = 3)
                img.draw_cross(blob.cx(), blob.cy(), color=color_new)
                img.draw_string(blob.cx() + 10, blob.cy() - 10, color_strings[color_idx], color=color_new)
    #显示在LCD上
    lcd.display(img)
    #打印帧率
    #print(clock.fps())

操作手順:

  1. (1)単一物体の色域範囲の値を取得します。実験6-1 ビジョン認識 – 単一物体の色範囲の取得 を参照してください。

実際のシーンに合わせてさまざまな物体の色をテストし、下表のようなデータを記録する必要があります。

対象物の色 取得データ
緑色の物体 23,52,-29,-9,-9,7

(2)緑色の色域範囲の値を変更します。測定した色域範囲の値で、下図の赤い部分を置き換えてください。例えば、緑色の物体の色域範囲の値 23,52,-29,-9,-9,7 を下図の赤い位置に置き換えます。

  1. プログラムをダウンロードします。(プログラムのダウンロード方法は AIビジョンモジュールの基本的な使い方 を参照してください)

(1)パラメータを変更した後、プログラムをダウンロードします。

(2)左側の接続アイコンをクリックし、表示された画面でポート番号を選択します。接続アイコンをクリックしてポート番号を選択し、詳細設定で Mode-3 を選択します。

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

  1. プログラムのダウンロード完了後、取得・認識したい物体をAIビジョンモジュール画面の取得領域に置き、認識結果を確認します。緑色の物体を置くと、AIモジュールの画面に Green と表示されます。

実験結果

緑色の物体を置き、AIモジュールが緑色の物体を認識すると、画面に Green と表示されます。

さまざまな物体の色域範囲を取得してプログラムのパラメータを変更し、認識結果を確認してみてください。

技術サポート

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