自助建网站哪个便宜,网页设计与网站建设的理解,南京建设网页培训班,隐秘入口 黑料正能量本文介绍了一个基于K230 CanMV开发板的多颜色三角形识别程序#xff0c;能够检测红、绿、蓝三种颜色的三角形。程序使用摄像头获取实时图像#xff0c;通过LAB颜色阈值过滤识别特定颜色的色块#xff0c;并判断是否为三角形#xff08;通过检测4个角点#xff09;。识别到…本文介绍了一个基于K230 CanMV开发板的多颜色三角形识别程序能够检测红、绿、蓝三种颜色的三角形。程序使用摄像头获取实时图像通过LAB颜色阈值过滤识别特定颜色的色块并判断是否为三角形通过检测4个角点。识别到的三角形会标注外接矩形、轮廓线、中心十字和颜色文字。程序支持LCD/HDMI/VIRT三种显示模式具有完善的资源释放机制。该方案适用于K230 CanMV v1.2.2版本可作为计算机视觉应用的开发参考。# 立创·庐山派-K230-CanMV开发板 多颜色三角形识别红/绿/蓝 # 适配K230 CanMV v1.2.2 import time, os, sys from media.sensor import * from media.display import * from media.media import * sensor_id 2 sensor None # 显示模式LCD开发板屏幕/HDMI/VIRT虚拟屏 DISPLAY_MODE LCD # 显示分辨率配置 if DISPLAY_MODE VIRT: DISPLAY_WIDTH ALIGN_UP(1920, 16) DISPLAY_HEIGHT 1080 elif DISPLAY_MODE LCD: DISPLAY_WIDTH 800 DISPLAY_HEIGHT 480 elif DISPLAY_MODE HDMI: DISPLAY_WIDTH 1920 DISPLAY_HEIGHT 1080 else: raise ValueError(DISPLAY_MODE仅支持 VIRT, LCD, HDMI) # 红/绿/蓝 三色LAB阈值全部启用适配K230摄像头 # 格式(L Min, L Max, A Min, A Max, B Min, B Max) color_thresholds [ (46, 66, 14, 92, -29, 106), # 红色阈值启用 (52, 88, -85, -6, -11, 91), # 绿色阈值 (47, 76, -35, 51, -83, -32) # 蓝色阈值 ] try: # 初始化摄像头沿用稳定的初始化逻辑 sensor Sensor(idsensor_id) sensor.reset() sensor.set_framesize(widthDISPLAY_WIDTH, heightDISPLAY_HEIGHT, chnCAM_CHN_ID_0) sensor.set_pixformat(Sensor.RGB565, chnCAM_CHN_ID_0) # 初始化显示器 if DISPLAY_MODE VIRT: Display.init(Display.VIRT, widthDISPLAY_WIDTH, heightDISPLAY_HEIGHT, fps60) elif DISPLAY_MODE LCD: Display.init(Display.ST7701, widthDISPLAY_WIDTH, heightDISPLAY_HEIGHT, to_ideTrue) elif DISPLAY_MODE HDMI: Display.init(Display.LT9611, widthDISPLAY_WIDTH, heightDISPLAY_HEIGHT, to_ideTrue) MediaManager.init() sensor.run() print(K230多颜色三角形识别程序启动红/绿/蓝按CtrlC退出) while True: os.exitpoint() # 获取摄像头实时帧 img sensor.snapshot(chnCAM_CHN_ID_0) # 查找色块过滤小噪声面积2000像素 blobs img.find_blobs(color_thresholds, area_threshold2000) if blobs: for blob in blobs: # 获取色块角点判断是否为三角形角点数量3 corners blob.corners() if len(corners) 4: # 根据颜色索引确定识别到的颜色 color_flag blob[8] if color_flag 0x01: color_name red draw_color (255, 0, 0) # 红色RGB elif color_flag 0x02: color_name green draw_color (0, 255, 0) # 绿色RGB elif color_flag 0x04: color_name blue draw_color (0, 0, 255) # 蓝色RGB else: color_name unknown draw_color (128, 128, 128) # 灰色 # 1. 绘制三角形外接矩形白色框 img.draw_rectangle(blob[0:4], color(255, 255, 255), thickness3) # 2. 绘制三角形轮廓对应颜色线条循环3次 for i in range(3): x1, y1 corners[i] x2, y2 corners[(i 1) % 3] img.draw_line(x1, y1, x2, y2, colordraw_color, thickness3) # 3. 绘制中心十字黄色 img.draw_cross(blob[5], blob[6], color(255, 255, 0), size10) # 4. 标注三角形颜色文字 img.draw_string(blob[0], blob[1]-20, fTriangle: {color_name}, colordraw_color, scale2, mono_spaceFalse) # 5. 串口打印识别结果 print(f识别到【{color_name}】三角形 - 中心坐标X{blob[5]}, Y{blob[6]}) # 显示处理后的图像到屏幕 Display.show_image(img) except KeyboardInterrupt: print(\n用户手动终止程序) except BaseException as e: print(f程序异常{str(e)}) finally: # 释放硬件资源 if sensor: sensor.stop() Display.deinit() os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) time.sleep_ms(100) MediaManager.deinit() print(程序退出资源已释放)