@kidswong999 但是为什么识别一下卡那不会动半天出来线性回归不是一直动的
G
g23b
@g23b
0
声望
17
楼层
468
资料浏览
0
粉丝
0
关注
g23b 发布的帖子
-
巡线问题为什么会出现下面的问题?
为什么摄像头对这黑线后卡住一会才出来线性回归线而且不是实时的
BLACK_THRESHOLD = (34, 100, -61, 77, -76, 116)#(100, 55, -35, 22, 22, 82)#(3, 41, -3, 77, 12, 70)#(0, 95, 1, 34, 36, 80) #(5, 89, 35, 75, -8, 50)# Grayscale threshold for dark things... import sensor, image, time , math ,struct from pyb import UART from struct import pack, unpack import json sensor.reset() #sensor.set_vflip(True) #sensor.set_hmirror(True) sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) # 80x60 (4,800 pixels) - O(N^2) max = 2,3040,000. #sensor.set_auto_whitebal(False) # must be turned off for color tracking #sensor.set_windowing([0,20,80,40]) sensor.skip_frames(time = 2000) # WARNING: If you use QQVGA it may take seconds clock = time.clock() # to process a frame sometimes. uart = UART(3, 115200) while(True): clock.tick() img = sensor.snapshot().binary([BLACK_THRESHOLD]) line = img.get_regression([(100,100)], robust = True) if (line): rho_err = abs(line.rho())-img.width()/2 #计算一条直线与图像中央的距离 #坐标变换 xy轴的角度 if line.theta()>90: theta_err = line.theta()-180 else: theta_err = line.theta() img.draw_line(line.line(), color = 255)#127 output_str = "%f"%(theta_err) sumA = 0 sumB = 0 data = bytearray([0x41,0x43]) uart.write(data) data = bytearray([0x02,8]) for b in data: sumB = sumB + b sumA = sumA + sumB uart.write(data) float_value = theta_err float_bytes = pack('f', float_value) for b in float_bytes: sumB = sumB + b sumA = sumA + sumB uart.write(float_bytes) float_value = rho_err*0.1 float_bytes = pack('f', float_value) for b in float_bytes: sumB = sumB + b sumA = sumA + sumB uart.write(float_bytes) data = bytearray([sumB, sumA]) uart.write(data) print(float_value,theta_err) #print(rho_err*0.1) else: sumA = 0 sumB = 0 data = bytearray([0x41,0x43]) uart.write(data) data = bytearray([0x02,8]) for b in data: sumB = sumB + b sumA = sumA + sumB uart.write(data) float_value = 200 float_bytes = pack('f', float_value) for b in float_bytes: sumB = sumB + b sumA = sumA + sumB uart.write(float_bytes) float_value = 0 float_bytes = pack('f', float_value) for b in float_bytes: sumB = sumB + b sumA = sumA + sumB uart.write(float_bytes) data = bytearray([sumB, sumA]) uart.write(data) #print(theta_err) print(float_value)
-
RE: 循环拍照并保存怎么保存不同的名字?
@kidswong999 语法解决啦,但是该如何第一次识别到拍照一次保存命名为1的照片识别第二次保存命名为2的照片 ,我的是识别后直接拍三张
-
循环拍照并保存怎么保存不同的名字?
循环拍照并保存怎么保存不同的名字?
import sensor, image, time, time, pyb from pyb import UART import json sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # must be turned off for color tracking sensor.set_auto_whitebal(False) # must be turned off for color tracking clock = time.clock() uart = UART(3, 115200) while(True): clock.tick() img = sensor.snapshot().lens_corr(1.8) for r in img.find_rects(threshold=3500): #find_circles(threshold = 3500, x_margin = 10, y_margin = 10, r_margin = 10, r_min = 2, r_max = 100, r_step = 2).find_rects([roi=Auto, threshold=3500]) area = (r.rect()) #(c.x()-c.r(), c.y()-c.r(), 2*c.r(), 2*c.r()) #area为识别到的圆的区域,即圆的外接矩形框 statistics = img.get_statistics(roi=area) #像素颜色统计 print(statistics) #(0,100,0,120,0,120)是红色的阈值,所以当区域内的众数(也就是最多的颜色),范围在这个阈值内,就说明是红色的圆。 #l_mode(),a_mode(),b_mode()是L通道,A通道,B通道的众数。 if 0<statistics.l_mode()<100 and 0<statistics.a_mode()<120 and 0<statistics.b_mode()<120: #if the circle is red img.draw_rectangle(area,color=(255, 0, 0)) print("I am find ") #(c.x(), c.y(), c.r(), color = (255, 0, 0)) #识别到的红色区域用红色的圆框出来 r=200 uart.write(str(r)) #200回传到飞控 再m35模式里设置飞机悬停 也就是锁定xyz轴等待几秒运行下图拍照。 time.sleep_ms(10000) RED_LED_PIN = 1 BLUE_LED_PIN = 3 pyb.LED(RED_LED_PIN).on() time.sleep_ms(2000) # 给用户一个时间来准备 pyb.LED(RED_LED_PIN).off() time.sleep_ms(2000) pyb.LED(BLUE_LED_PIN).on() print("You're on camera!") img = sensor.snapshot() if n=1 n<4: n=n+0 print(n) img.morph(1, [+2, +1, +0,\ +1, +1, -1,\ +0, -1, -2]) # 浮雕图像 img.save("%d.jpg"%n) # or "example.bmp" (or others) pyb.LED(BLUE_LED_PIN).off() print("Done! Reset the camera to see the saved image.") else: print("Don't find") else: print("Don't find image.")