@kidswong999 是可以运行的,不过它识别色块并检测形状的时候,过一段时间会报错 (如图 ) 或者直接断开与openmv的连接
G
g3kv 发布的帖子
-
RE: 代码错误的原因
Blob Detection Example
This example shows off how to use the find_blobs function to find color
blobs in the image. This example in particular looks for dark green objects.
import sensor, image, time
import car
from pid import PID
from image import SEARCH_EX, SEARCH_DS
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.
For color tracking to work really well you should ideally be in a very, very,
very, controlled enviroment where the lighting is constant...
thresholds = [(82, 100, -31, 13, 37, 127),# 黄色
(21, 64, 9, 125, -46, -4),#紫色
(43, 66, 7, 49, 48, 89),#橙色
(57, 84, -42, -3, -71, -13) #蓝色]
size_threshold = 2000
x_pid = PID(p=0.5, i=1, imax=100)
h_pid = PID(p=0.05, i=0.1, imax=50)
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
while(True):
clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # Take a picture and return the image. blobs = img.find_blobs(thresholds) if blobs: max_blob = find_max(blobs) x_error = max_blob[5]-img.width()/2 h_error = max_blob[2]*max_blob[3]-size_threshold #print("x error: ", x_error) img.draw_rectangle(max_blob[0:4]) # rect img.draw_cross(max_blob[5], max_blob[6]) # cx, cy a=(max_blob[0],max_blob[1],max_blob[2],max_blob[3]) print(a) for r in img.find_rects(roi=a,threshold = 10000): img.draw_rectangle(r.rect(), color = (255, 0, 0)) for p in r.corners(): img.draw_circle(p[0], p[1], 5, color = (0, 255, 0)) #x_output=x_pid.get_pid(x_error,1) #h_output=h_pid.get_pid(h_error,1) #print("h_output",h_output) #car.run(-h_output-x_output,-h_output+x_output) else: car.run(10,-10)
-
代码错误的原因
a=(max_blob[0],max_blob[1],max_blob[2],max_blob[3]) print(a) for r in img.find_rects(roi=a,threshold = 10000): img.draw_rectangle(r.rect(), color = (255, 0, 0)) for p in r.corners(): img.draw_circle(p[0], p[1], 5, color = (0, 255, 0))
颜色识别后进行矩形识别,可以执行但一段时间显示memoryerror的错误提示,而且断开Openmv和电脑的连接,这是为什么?