• 免费好用的星瞳AI云服务上线!简单标注,云端训练,支持OpenMV H7和OpenMV H7 Plus。可以替代edge impulse。 https://forum.singtown.com/topic/9519
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • set_pixel写入的值和用get_pixel读到的值不一样



    • 我刚写入一个像素点的值,再立马读这个像素点的数据就不一样了是怎么回事

      # Untitled - By: 22096 - 周日 4月 16 2023
      
      import sensor, image, time
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000)
      
      clock = time.clock()
      def rgb_to_hsv(color_rgb):
          r,g,b = color_rgb[0]/255.0, color_rgb[1]/255.0, color_rgb[2]/255.0
          max_val = max(r, g, b)
          min_val = min(r, g, b)
          diff = max_val - min_val
          if max_val == min_val:
              h = 0
          elif max_val == r:
              h = (60 * ((g-b)/diff) + 360) % 360
          elif max_val == g:
              h = (60 * ((b-r)/diff) + 120) % 360
          else:
              h = (60 * ((r-g)/diff) + 240) % 360
              
          if max_val == 0:
              s = 0
          else:
              s = (diff/max_val)*100
          
          v = max_val*100
          
          return (int(h),int(s),int(v))
      
      img = sensor.snapshot()
      
      for j in range(img.height()):
          for i in range(img.width()):        
              color_rgb = img.get_pixel(i,j)
              color_hsv = rgb_to_hsv(color_rgb)   # 要写入的值
              img.set_pixel(i,j,color_hsv)        # 写入
              if ( (3 == i) and ( 31 == j ) ):
                  print(color_rgb)
                  print(color_hsv)
                  print(img.get_pixel(i,j))       # 再读这个值就和要写入的不一样了
      
      
      


    • Image对象是RGB565格式,你写hsv不行的。



    • @kidswong999 写入的内容代表的意义不重要,重要的是它和我想写入的值不一样是因为什么,写入一个值,读到的却是另一个值

      # Hello World Example
      #
      # Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script!
      
      import sensor, image, time
      
      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.skip_frames(time = 2000)     # Wait for settings take effect.
      clock = time.clock()                # Create a clock object to track the FPS.
      
      img = sensor.snapshot()         # Take a picture and return the image.
      
      print(img.get_pixel(11,11))
      img.set_pixel(11,11,(2,5,1))    # 在(11,11)这个坐标的像素里写入rgb值(2,5,1)
      print(img.get_pixel(11,11))    # 立刻读刚刚写入的位置,结果却是(0,4,0)
      
      
      

      0_1681779173125_QQ截图20230418085243.png



    • 是因为RGB565,一共2个字节,你存的是888。会只保留R的高5位,G的高6位,B的高5位。