2023电赛E题视觉部分
该部分主要要完成正方形区域的识别,并返回对应的坐标,但是由于距离1m,过远。因此需要引入图像增强,下面代码完成基本流程测试,仅供参考:
import sensor
import image
import time
# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
# 设置阈值,用于图像增强
thresholds = [(30, 100, -64, -8, -32, 32)] # 根据实际情况调整阈值
while True:
img = sensor.snapshot() # 获取图像
# 图像增强
img.binary([thresholds])
# 寻找轮廓
blobs = img.find_blobs([thresholds], pixels_threshold=200, area_threshold=200)
# 遍历找到的轮廓
for blob in blobs:
# 判断是否为正方形
if blob.is_square():
# 计算正方形的中心坐标
x = blob.cx()
y = blob.cy()
# 计算距离
distance = 1 / blob.w() # 假设正方形的宽度为1米
# 在图像上绘制正方形和坐标
img.draw_rectangle(blob.rect())
img.draw_cross(x, y)
# 打印坐标和距离
print("Square found at (x={}, y={}), distance={}m".format(x, y, distance))
# 显示图像
img.show()