参考测距例程后的语法问题
-
# Single Color RGB565 Blob Tracking Example # # This example shows off single color RGB565 tracking using the OpenMV Cam. import sensor,image,math,time import sending threshold_index = 0 # 0 for red, 1 for green, 2 for blue # Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max) # The below thresholds track in general red/green/blue things. You may wish to tune them... thresholds = [(30, 100, 15, 127, 15, 127), # generic_red_thresholds #只有红色 (30, 100, -64, -8, -32, 32), # generic_green_thresholds #只有绿色 (0, 30, 0, 64, -128, 0)] # generic_blue_thresholds #只有蓝色 ![0_1550589074881_H__Measure.py - OpenMV IDE 2019_2_19 23_07_37.png](https://fcdn.singtown.com/9dccc9e7-b392-4679-b7be-3c8a829ac677.png) #while (True): # View_Color() # Measure the distance # # This example shows off how to measure the distance through the size in imgage # This example in particular looks for yellow pingpong ball. # For color tracking to work really well you should ideally be in a very, very, # very, controlled enviroment where the lighting is constant... #yellow_threshold = ( 56, 83, 5, 57, 63, 80) # You may need to tweak the above settings for tracking green things... # Select an area in the Framebuffer to copy the color settings. sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.RGB565) # use RGB565. sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed. sensor.skip_frames(10) # Let new settings take affect. sensor.set_auto_whitebal(False) # turn this off. clock = time.clock() # Tracks FPS. i = sending.receive_data() K=5000 #the value should be measured 需根据要识别物体来确定初始化比例大小 #实际大小=K*宽的像素 # Single Color RGB565 Blob Tracking Example # # This example shows off single color RGB565 tracking using the OpenMV Cam. #分别给i赋值1,2,3 j = 1 def R_G_B(j): #寻找最大色块的坐标 if j <= 3: max_size=0 clock.tick() img = sensor.snapshot() for blob in img.find_blobs([thresholds[j-1]]): #色块中心的坐标 if blob.pixels() > max_size: max_blob = blob max_size = blob.pixels() img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) return max_blob #print('sum :', len(blob)) else: return 0 print(clock.fps()) def R_G_B_center(k): m = R_G_B(j) x = blob.cx() y = blob.cy() return x,y #while True: # R_G_B(1) def measure_distance(i): clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # Take a picture and return the image. blobs = R_G_B(i) if len(blobs) == 1: # Draw a rect around the blob. b = blobs[0] img.draw_rectangle(b[0:4]) # rect img.draw_cross(b[5], b[6]) # cx, cy if abs(b[2]-b[3])>2: #判断是否为球、正方体或其他立方体 Lm = b[3] else: Lm = (b[2]+b[3])/2 length = K/Lm #距离 = k/直径的像素 return length #print(b[2]) #while True: # Measure_Distance() #print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while # connected to your computer. The FPS should increase once disconnected.
-
因为blob类型没有len,怎么了?
-
@kidswong999 那为什么测距例程里面就有这种len()用法,而且编译例程没错。到我这里编译main函数就说错了?
import sensor, image, time
Measure the distance
This example shows off how to measure the distance through the size in imgage
This example in particular looks for yellow pingpong ball.
import sensor, image, time
For color tracking to work really well you should ideally be in a very, very,
very, controlled enviroment where the lighting is constant...
yellow_threshold = ( 56, 83, 5, 57, 63, 80)
You may need to tweak the above settings for tracking green things...
Select an area in the Framebuffer to copy the color settings.
sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # use RGB565.
sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
sensor.skip_frames(10) # Let new settings take affect.
sensor.set_auto_whitebal(False) # turn this off.
clock = time.clock() # Tracks FPS.K=5000#the value should be measured
while(True):
clock.tick() # Track elapsed milliseconds between snapshots().
img = sensor.snapshot() # Take a picture and return the image.blobs = img.find_blobs([yellow_threshold]) if len(blobs) == 1: # Draw a rect around the blob. b = blobs[0] img.draw_rectangle(b[0:4]) # rect img.draw_cross(b[5], b[6]) # cx, cy Lm = (b[2]+b[3])/2 length = K/Lm print(length) #print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while # connected to your computer. The FPS should increase once disconnected.
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)clock = time.clock()
while(True):
clock.tick()
img = sensor.snapshot()
print(clock.fps())
-
因为你的R_G_B函数返回的是一个blob,而不是很多个blob。
-
@kidswong999 那怎样让他返回很多个blob?
-
你写的函数我又不知道用处是什么。又不可能给你改。