想调用两个曝光值,但是运行到第二个曝光值的时候摄像头就会卡住
-
!!!而且在第一次曝光值的时候图像的亮暗还有点不一样,想知道在一个程序里面可以调用两次不一样的曝光吗!!!
# LOTS OF Blob Detection import sensor, image, time, math from pyb import UART import json import ustruct # 如果要保证颜色追踪效果的话, 需要对环境的严格控制 # 晚上光源的冷暖色等,都会对颜色追踪造成很大的影响 # 彩色图片颜色的阈值格式组成, 是由LAB颜色空间的各自最小值与最大值组成 # 点击右侧的颜色空间下拉选择按钮, 默认为RGB Color Space # 参考右侧的LAB Color Space里面的参数 # (minL, maxL, minA, maxA, minB, maxB) # 灰度图的阈值格式 # (min, max) white_threshold_01 = ((95, 100, -18, 3, -8, 4)); #白色阈值 red_threshold_01 = ((59, 10![1_1676624143446_亮的.png](https://fcdn.singtown.com/1fb27ea1-a65a-4394-9dde-15a3c89e9c8e.png) ![0_1676624143444_较暗的.png](https://fcdn.singtown.com/7e827a4b-967f-4f1c-b602-b4337e12393f.png) 0, 38, 96, 20, 63)); green_threshold_01 = ((29, 91, -128, -18, 19, 46)); yellow_threshold_01 = ((34, 100, -31, 42, 48, 84)); runData2 = [0x55,0x02,0x91,0x00,0x02,0x00,0x00,0xBB] sensor.reset() # 初始化摄像头 sensor.set_pixformat(sensor.RGB565) # 选择像素模式 RGB565. sensor.set_framesize(sensor.QVGA) # use QQVGA for speed. sensor.skip_frames(time = 1000) sensor.set_auto_whitebal(False) #关闭白平衡。白平衡是默认开启的,在颜色识别中,需要关闭白平衡。 sensor.set_auto_gain(False)#关闭自动增益 clock = time.clock() # Tracks FPS. ifdata = []#一个列表 def find_max(blobs): #定义寻找色块面积最大的函数 max_size=0 for blob in blobs: if blob.pixels() > max_size: max_blob=blob max_size = blob.pixels() return max_blob numbb=200 while(numbb!=0): time.sleep(6) sensor.set_auto_exposure(False, 1000)#这里设置曝光时间 time.sleep(6) clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # Take a picture and return the image. # pixels_threshold=100, area_threshold=100 blobs = img.find_blobs([red_threshold_01],roi=(20,20,280,200),x_stride =10,y_stride=10, pixels_threshold=280, area_threshold=200, merge=True, margin=10); #红色物块 blobs1 = img.find_blobs([green_threshold_01],roi=(20,20,280,200),x_stride =10,y_stride=10, pixels_threshold=280, area_threshold=200, merge=True, margin=10); #绿色物块 blobs2 = img.find_blobs([yellow_threshold_01],roi=(20,20,280,200),x_stride =10,y_stride=10, pixels_threshold=280, area_threshold=200, merge=True, margin=10); #蓝色物块 cx=0;cy=0;cx1=0;cy1=0;cx2=0;cy2=0; if blobs1: #如果找到了目标lv色 max_g = find_max(blobs1); # Draw a rect around the blob. img.draw_rectangle(max_g[0:4]) # rect #用矩形标记出目标颜色区域 img.draw_cross(max_g[5], max_g[6]) # cx, cy img.draw_cross(160, 120) # 在中心点画标记 #在目标颜色区域的中心画十字形标记 cx=max_g[5]; cy=max_g[6]; img.draw_line((160,120,cx,cy), color=(127)); #img.draw_string(160,120, "(%d, %d)"%(160,120), color=(127)); img.draw_string(cx, cy, "(%d, %d)"%(cx,cy), color=(127)); print("绿色") runData2.insert(3,0x01) print(hex(runData2[3])) elif blobs2: #如果找到了目标黄色 max_y = find_max(blobs2); # Draw a rect around the blob. img.draw_rectangle(max_y[0:4]) # rect #用矩形标记出目标颜色区域 img.draw_cross(max_y[5], max_y[6]) # cx, cy img.draw_cross(160, 120) # 在中心点画标记 #在目标颜色区域的中心画十字形标记 cx=max_y[5]; cy=max_y[6]; img.draw_line((160,120,cx,cy), color=(127)); #img.draw_string(160,120, "(%d, %d)"%(160,120), color=(127)); img.draw_string(cx, cy, "(%d, %d)"%(cx,cy), color=(127)); print("黄色") runData2.insert(3,0x02) elif blobs: #如果找到了目标红色 max_b = find_max(blobs); # Draw a rect around the blob. img.draw_rectangle(max_b[0:4]) # rect #用矩形标记出目标颜色区域 img.draw_cross(max_b[5], max_b[6]) # cx, cy img.draw_cross(160, 120) # 在中心点画标记 #在目标颜色区域的中心画十字形标记 cx=max_b[5]; cy=max_b[6]; img.draw_line((160,120,cx,cy), color=(127)); #img.draw_string(160,120, "(%d, %d)"%(160,120), color=(127)); img.draw_string(cx, cy, "(%d, %d)"%(cx,cy), color=(127)); print(max_b[4]) print("红色") runData2.insert(3,0x03) numbb=numbb-1 print("exposure == %d" % sensor.get_exposure_us()) print(numbb) if(runData2[3]==0x01 or runData2[3]==0x02 or runData2[3]==0x03): numbb=0 numbbb=200 while(numbbb!=0): sensor.set_auto_exposure(False, 10000)#这里设置曝光时间 numbbb=numbbb-1 print("exposure == %d" % sensor.get_exposure_us()) print("over,over,over,over,over,over,over,over,over,over,over,") #blob = blobs[0] #img_ball_r= calc_radius(blob) ## 小球离镜头的距离 根据我们的公式计算 #ball_distance = K / img_ball_r #print("小球距离: %d"%ball_distance)
-
卡住的原因是你sleep6秒。把45和47行的sleep删掉。
-
@gnov 在 想调用两个曝光值,但是运行到第二个曝光值的时候摄像头就会卡住 中说:
而且在第一次曝光值的时候图像的亮暗还有点不一样,想知道在一个程序里面可以调用两次不一样的曝光吗
这个没太听懂。多次调用set_auto_exposure没有问题。