重现步骤
返回矩形元素角点元组并打印即可
期待结果和实际结果
在通过rect相关方法返回角点元组时,感觉角点的顺序不太对。按照手册应该为左上角顺时针。而此时则为左下角逆时针
软硬件版本信息
错误日志
尝试解决过程
补充材料
完整代码:
import time
import os
import sys
import time
from media.sensor import *
from media.display import *
from media.media import *
sensor = None
try:
print("camera_test")
sensor = Sensor(width=320, height=240)
sensor.reset()
# 鼠标悬停在函数上可以查看允许接收的参数
# 对于寻找矩形函数 最好设置分辨率为320,240 帧率大大提高
sensor.set_framesize(width=320, height=240, chn=CAM_CHN_ID_0)
sensor.set_pixformat(Sensor.RGB565, chn=CAM_CHN_ID_0)
Display.init(Display.LT9611, to_ide=True)
# 初始化媒体管理器
MediaManager.init()
# 启动 sensor
sensor.run()
clock = time.clock()
while True:
clock.tick()
os.exitpoint()
img = sensor.snapshot(chn=CAM_CHN_ID_0)
img_rect = img.to_grayscale(copy = True) #将原img转化灰度img 桥梁 记得写copy参数
img_rect = img_rect.binary([(0, 50)])
rects = img_rect.find_rects(threshold = 100000)
#遍历列表中的矩形
for index,rect in enumerate(rects,start = 1):
#rect.corners() 返回矩形对象的四个角的坐标,也是一个列表
#[(x1,y1),(x2 ,y2),(x3,y3),(x4,y4)]
corner = rect.corners()
img.draw_line(corner[0][0],corner[0][1],corner[1][0],corner[1][1],color = (0,0,255),thickness = 10)
img.draw_line(corner[2][0],corner[2][1],corner[1][0],corner[1][1],color = (0,0,255),thickness = 10)
img.draw_line(corner[2][0],corner[2][1],corner[3][0],corner[3][1],color = (0,0,255),thickness = 10)
img.draw_line(corner[0][0],corner[0][1],corner[3][0],corner[3][1],color = (0,0,255),thickness = 10)
print(f"{index},左上角{corner[0]}")
print(f"{index},右上角{corner[1]}")
print(f"{index},右下角{corner[2]}")
print(f"{index},左下角{corner[3]}")
#打印fps至图片上
img.draw_string_advanced(15,10,20,"fps:{}".format(clock.fps()),color = (0,255,255))
img.compressed_for_ide() #将缩小后的图片压缩到帧缓冲区中央
Display.show_image(img)
except KeyboardInterrupt as e:
print("用户停止: ", e)
except BaseException as e:
print(f"异常: {e}")
finally:
if isinstance(sensor, Sensor):
sensor.stop()
Display.deinit()
os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
time.sleep_ms(100)
MediaManager.deinit()