升级到2.6.9版本,固件升级后,相机初始化失败,颜色不正常?
-
![1_1619770322133_22.bmp](正在上传 100%) ![0_1619770322132_11.bmp](正在上传 100%)
##;如果拍到的背景为白色,相机初始化正常,颜色正常,图片22.bmp;如果拍摄到其他颜色,11.bmp相机颜色不正常,怎么回事啊?# Hello World Example # # Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script! import sensor, image, time, pyb sensor.reset() # Reset and initialize the sensor. sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE) sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240) sensor.set_auto_whitebal(False) # Wait for settings take effect. sensor.set_auto_gain(False) sensor.set_auto_exposure(False,600) #设置相机曝光 clock = time.clock() # Create a clock object to track the FPS. red_led = pyb.LED(2) red_led.off() #定义引脚,P1为out口,输出检测结果;P5为in口,接收拍照信号 p_1 = pyb.Pin("P1", pyb.Pin.OUT_PP) p_1.low() p_5 = pyb.Pin('P5', pyb.Pin.OUT_PP, pyb.Pin.PULL_DOWN) p_5.low() def find_max(blobs): max_size=0 for blob in blobs: if blob[2]*blob[3] > max_size: max_blob=blob max_size = blob[2]*blob[3] return max_blob flag = 0 #传感器状态标记位,0表示未触发,1表示已触发; #当p_5.value()>0,表示传感器开始触发,相机拍照; #当p_5.value()<1,表示传感器已经触发过,将flag=1,防止重复拍照 i=0 #缺陷计数 bad_1=(0,255,-40,20,-40,10) #正常颜色的LAB通道的区间阈值 #L通道为亮度通道,暂时不用,设置为0,255 #A通道和B通道为检测参数,表示正常颜色的区间阈值 #颜色阈值设定的范围越大,检测越松 sensor.set_windowing((1,69,308,132)) #设置检测区域ROI,在初次调试时注释掉,选择合适的ROI while(True): clock.tick() if p_5.value()>0 and flag==0: #if 1>0: #测试用的语句,测试的时候,在上句if前加 # ,当前if的 # 去掉 flag = 1 area_1 = 0 img = sensor.snapshot() # 获取当前相机拍摄的一张图像img tongdao = img.get_statistics() blobs_1=img.find_blobs([bad_1], merge=True) if blobs_1: #查找正常颜色 max_blob_1 = find_max(blobs_1) # img.draw_rectangle(max_blob_1[0:4]) # rect # img.draw_cross(max_blob_1[5], max_blob_1[6]) # cx, cy area_1 = max_blob_1.area() #获取正常颜色的面积,单位:像素 if area_1<10000 : #如果正常颜色的面积小于设定值,如10000,剔除 #面积设定越大越严,越小越松 red_led.on() #写入的是red红灯,实际是控制的状态灯绿灯 p_1.high() #指示灯-绿灯亮,输出高电平 i=i+1 print(i,"****area:****",area_1) #缺陷计数,并将缺陷面积显示出来,方便调试 # img_name = str(i)+".jpg" # img.save(img_name) print("a-lq:",tongdao.a_lq(),"a-uq:",tongdao.a_uq(),"a-min:",tongdao.a_min(),"a-max:",tongdao.a_max(),"a-StDev:",tongdao.a_stdev()) print("b-lq:",tongdao.b_lq(),"b-uq:",tongdao.b_uq(),"b-min:",tongdao.a_min(),"b-max:",tongdao.b_max(),"b-StDev:",tongdao.b_stdev()) time.sleep_ms(50) #给出50ms的高电平信号 red_led.off() #拉低电平,恢复默认状态,防止连续剔除 p_1.low() else: red_led.off() p_1.low() if p_5.value()<1: flag = 0
请在这里粘贴代码
-
联系售后维修吧。
-
我这边十几台相机在使用,有4台出现这种问题,能不能先尝试更新固件或者驱动?现场使用中,不方便拆除检修
-
@kidswong999 售后的联系方式有吗?
-
This post is deleted!
-
-
-
不是硬件的问题了,就是更新了固件,驱动不一样了。默认白平衡变了。
原因:sensor.set_auto_whitebal(False)这里没有指定白平衡。
解决步骤:
1,打白光。
2,运行这个代码:https://book.openmv.cc/example/21-Sensor-Control/sensor-manual-whitebal-control.html
会得到白平衡的参数。比如(-6.02073, -5.75391, -0.931115)。
2,然后再你的代码中改为:sensor.set_auto_whitebal(False,(-5.75391, -6.02073, -2.40891)),参数是你自己环境的。建议:sensor.set_auto_gain(False)里面的参数也要指定。
-
@kidswong999 谢谢,你的方法很有用,问题已经解决
-
@kidswong999 为什么运行该代码后,输出的参数全是(0,0,0),初始化摄像头还是有时候暗有时候亮。