|
import sensor, image, time,lcdimport car
THRESHOLD = (5, 19, -10, 17, -10, 10) #标的物的lab阈值
lcd.init()sensor.reset()sensor.set_vflip(True) #括号内为True则为图像垂直反转
sensor.set_hmirror(True) #括号内为True则为图像水平反转
sensor.set_pixformat(sensor.RGB565) #采集图像的格式(RGB565格式)
sensor.set_framesize(sensor.QQQVGA) #采集图像的分辨率大小为QQQVGA 【80x60 (4,800 像素)】 - O(N^2) max = 2,3040,000.
#sensor.set_windowing([0,20,80,40])
sensor.skip_frames(time = 2000)
# WARNING: If you use QQVGA it may take seconds#跳过2000时钟使以上设置生效
clock = time.clock() # to process a frame sometimes.
while(True):
clock.tick()
img = sensor.snapshot().binary([THRESHOLD])
lcd.display(img)
#截取一张图片snapshot();
#对图片的中标的物阈值进行分割binary([THRESHOLD]),分割结果是,标的物标记为白色,非标为黑色; #图片中所有像素与THRESHOLD中的阈值进行比较,THRESHOLD阈值内的标为白,否则标为黑。'''
line = img.get_regression([(100,100)], robust = True) #get_regression()对图像中所有符合阈值的像素(阈值像素)进行线性回归计算(即在正中心拟合成一条直线)
if (line): #拟合出的直线
rho_err = abs(line.rho())-img.width()/2 #abs()取绝对值; #拟合线横截距的绝对值-宽度的一半
if line.theta()>90:
theta_err = line.theta()-180 #坐标轴的变换,第二象限变为0°~-90°
else:
theta_err = 90-line.theta() #坐标轴的变换,第一象限变为90°~0° #坐标轴整体变换为Y轴正半轴为0°,X轴正半轴为90°,X轴负半轴为-90°
img.draw_line(line.line(), color = 127) #将得到的拟合直线画出来
print(rho_err,line.magnitude(),rho_err)
#line.magnitude(),线性回归的效果 #打印偏航角,线性回归效果'''
|
|