星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 升级到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!


    • 0_1619779424115_0ecdc482-c5c6-4945-8606-f6030d6adb84-image.png



    • 0_1619779456523_e386f460-855a-47c1-86a1-21ff24ffd7c2-image.png



    • 不是硬件的问题了,就是更新了固件,驱动不一样了。默认白平衡变了。

      原因: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 谢谢,你的方法很有用,问题已经解决