Y
@kidswong999 编译似乎没有错,就是想知道有什么改进的方法提高我的帧数?
main.py
# Untitled - By: Lee - 周六 1月 26 2019
# 收开始命令 扫码 找色块 测距 发距离
import sensor, image, time
from pyb import UART
import json
from sending import receive_data
from sending import sending_data
import Sao_Ma
import Measure
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()
uart = UART(3, 19200)
L = 0
while True:
order = receive_data()
if order != 0: #开始执行命令
fan_kui = Sao_Ma.ma() #扫码
uart.write('fan_kui') #反馈扫码的数字(整数)
time.sleep(1000)
N = receive_data()
if N == 1:
L = Measure.measure_distance(N)
print(L)
uart.write('L') #返回距离大小
elif N == 2:
L = Measure.measure_distance(N)
print(L)
uart.write('L')
else:
L = Measure.measure_distance(N)
print(L)
uart.write('L')
print(clock.fps())
Measure.py
# Untitled - By: Lee - 周五 2月 22 2019
# 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...
red_thresholds = (36, 66, 14, 72, -6, 60) # generic_red_thresholds #只有红色
green_thresholds = (70, 100, -10, 7, 0, 35) # generic_green_thresholds #只有绿色
blue_thresholds = (34, 50, -17, 22, -40, -10) # generic_blue_thresholds #只有蓝色
#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
def R_G_B(j): #寻找最大色块的坐标
if j <= 3:
max_size=0
clock.tick()
img = sensor.snapshot()
if j == 1:
blob = img.find_blobs([red_thresholds]) #色块中心的
elif j ==2:
blob = img.find_blobs([green_thresholds])
else:
blob = img.find_blobs([blue_thresholds])
#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
return blob
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):
m = i
clock.tick() # Track elapsed milliseconds between snapshots().
img = sensor.snapshot() # Take a picture and return the image.
blobs = R_G_B(m)
length = 0
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/直径的像素
print(length)
return length
#print(b[2])
#while True:
# ff = measure_distance(1)
# print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while
# connected to your computer. The FPS should increase once disconnected.
Sao_Ma.py
import sensor, image,time
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA) # can be QVGA on M7...
sensor.skip_frames(30)
sensor.set_auto_gain(False) # must turn this off to prevent image washout...
clock = time.clock()
def ma():
clock.tick()
img = sensor.snapshot()
img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
for code in img.find_qrcodes():
img.draw_rectangle(code.rect(),color = (0,0,0))
numbers = code.payload()
if code.payload() >= '0':
numbers = list(map(int, numbers))
number = numbers[0]*100+numbers[1]*10+numbers[2]
return nunmer
#print(number)
break
sending.py
# Untitled - By: Lee - 周日 2月 3 2019
import time
from pyb import UART
uart = UART(3, 115200)
uart.init(115200, bits=8, parity=None, stop=1) # init with given parameters
def sending_data(jj):
global uart
j = jj
print(j)
uart.write('j') #反馈字符串
def receive_data():
global uart
if uart.any():
tmp_data = uart.readline()
uart.write("RECIVED : %s\n"%tmp_data)
print(tmp_data)
return tmp_data
else:
return 1
#while(True):
# sending_data(1)
# receive_data()
# time.sleep(1000)