程序里二次改变白平衡和自动增益有什么要注意的吗?
-
我的颜色识别和二值化巡线算法的白平衡和自动增益设置是相反的
这两算法单独时都能用但是放在一起总是不能完美使用
我就是在while(true)里两次设置白平衡和自动增益
但是画面会屏闪,前一帧的画面很正常,下一帧的画面就。。。不正常
-
一般只需要在开机的时候判断2s,然后关闭白平衡和曝光。
如果 你的光源影响很大,宁愿打开白平衡和曝光。
-
但是打开白平衡和自动增益扫十字效果(我的用法和色块识别类似)特别不好
THRESHOLD = [(0,100)] BINARY_VISIBLE = True import sensor, image, time, math, utime from pyb import UART from pyb import LED import json roi=(0,60,160,60) roi_1 = [(20, 0, 120, 20), # 北 (20, 100, 120, 20), # 南 (0, 0, 20, 120), # 西 (140, 0, 20, 120), # 东 (60,40,40,40)] # 中 #LED(1).on() #LED(2).on() #LED(3).on() sensor.reset() sensor.set_vflip(False) sensor.set_hmirror(False) sensor.set_pixformat(sensor.GRAYSCALE) sensor.set_framesize(sensor.QQVGA) sensor.set_auto_whitebal(False) # turn this off. sensor.set_auto_gain(False) sensor.skip_frames(time = 2000) clock = time.clock() buf =[0 for i in range(5)] low_threshold = (0, 40 ) uart = UART(3, 115200) while(True): m = -1 isten = 0 #img = sensor.snapshot() sensor.set_auto_whitebal(False) # turn this off. sensor.set_auto_gain(False) utime.sleep_us(90) img = sensor.snapshot().lens_corr(strength = 1.8, zoom = 1.0) img.binary([low_threshold],invert = 1) for r in roi_1: m += 1 blobs = img.find_blobs(THRESHOLD, roi=r[0:4],pixels_threshold=100, area_threshold=100, merge=True) #img.draw_rectangle(r[0:4], color=(255,0,0)) if blobs: most_pixels = 0 largest_blob = 0 for i in range(len(blobs)): #目标区域找到的颜色块(线段块)可能不止一个,找到最大的一个,作为本区域内的目标直线 if blobs[i].pixels() > most_pixels: most_pixels = blobs[i].pixels() #merged_blobs[i][4]是这个颜色块的像素总数,如果此颜色块像素总数大于 largest_blob = i # Draw a rect around the blob. img.draw_rectangle(blobs[largest_blob].rect()) #将此区域的像素数最大的颜色块画矩形和十字形标记出来 img.draw_cross(blobs[largest_blob].cx(), blobs[largest_blob].cy()) buf[m] = 1 else: buf[m] = 0 utime.sleep_us(90) sensor.set_auto_whitebal(True) # turn this off. sensor.set_auto_gain(True) utime.sleep_us(90) clock.tick() img = sensor.snapshot().binary(THRESHOLD) if BINARY_VISIBLE else sensor.snapshot() line = img.get_regression([(255,255) if BINARY_VISIBLE else THRESHOLD],roi=(0,60,160,60)) if (line): rho_err = abs(line.rho())-img.width()//2+256 img.draw_line(line.line(), color = 127) print("theta %f, rho = %f " % (line.theta(), line.rho()) if (line) else "N/A") output_str="%d" %rho_err print(output_str) if buf[0]==1 and buf[1] ==1 and buf[2] ==1 and buf[3] ==1 and buf[4] ==1: isten = 1 print(isten) out_str="[%d" %isten uart.write(out_str )
-
@kidswong999 麻烦您解释详细一些,我没听太懂,谢谢qwq
-
-
..........求助