今天搞颜色识别,跟着b站的小黑学的:
展示学习成果————————
import image
import lcd
import time
import sensor
import lcd, image
lcd.init()
lcd.init(freq = 15000000)
sensor.reset()
lcd.init(type=2)
lcd.rotation(2)
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)#分辨率
sensor.set_auto_gain(False)#自动增益
sensor.set_auto_whitebal(False)#白平衡
sensor.run(1)
Range = (0,0,160,120)
for i in range(200):
img=sensor.snapshot()
img.draw_rectangle((150,100,30,30),color=(255,255,255))#圈出搜寻区域
Statistics = img.get_statistics(roi=(200,100,30,30)) #得到统计信息
Threshold = [Statistics.l_min(),Statistics.l_max(),
Statistics.a_min(),Statistics.a_max(),
Statistics.b_min(),Statistics.b_max(),]#lab
print(Threshold)
while True:
img=sensor.snapshot()
#找色块
for blob in img.find_blobs([Threshold],roi=Range,pixels_threshold=100,area_threshold=100,merge=True,m argin=10):
img.draw_rectangle(blob.rect())#画框
img.draw_cross(blob.cx(),blob.cy())#十字
print(blob.cx(),blob.cy())
这个是自动识别物LAB取值,然后自动找。
下来实现手动:
import image
import lcd
import time
import sensor
import lcd, image
lcd.init()
lcd.init(freq = 15000000)
sensor.reset()
lcd.init(type=2)
lcd.rotation(2)
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)#分辨率
sensor.set_auto_gain(False)#自动增益
sensor.set_auto_whitebal(False)#白平衡
sensor.run(1)
Range = (0,0,160,120)
#for i in range(200):
#img=sensor.snapshot()
#img.draw_rectangle((150,100,30,30),color=(255,255,255))#圈出搜寻区域
#Statistics = img.get_statistics(roi=(200,100,30,30)) #得到统计信息
#Threshold = [Statistics.l_min(),Statistics.l_max(),
#Statistics.a_min(),Statistics.a_max(),
#Statistics.b_min(),Statistics.b_max(),]
#print(Threshold)
while True:
img=sensor.snapshot()
#找色块
for blob in img.find_blobs([(21, 31, 15, 35, 14, -3)],roi=Range,pixels_threshold=100,area_threshold=100,merge=True,margin=10):
img.draw_rectangle(blob.rect())#画框
img.draw_cross(blob.cx(),blob.cy())#十字
print(blob.cx(),blob.cy())
以上是颜色识别。
串口K210——明天实现
data = bytearray([0xa3,0xb3,obj.classid()+1, pos[0],pos[1],0xc3])#帧头+帧头+数字+坐标x+坐标y+帧尾
usart3.write(data)
这里记一下我感觉很重要的一个函数(img.find_blobs)
img.find_blobs(
[(21, 31, 15, 35, 14, -3)], #识别颜色
roi=Range, #想要识别区域
pixels_threshold=100, #(面积阈值)判断大小
area_threshold=100, #(像素个数阈值)判断大小
merge=True, #默认为False,如果merge=True,那么识别到的所有色块将会合并成一个大色块
margin=10): #10个像素之间如果有没有被识别的,将会被合并为识别的
#目标像素个数低于100个的忽略,被框选面积小于100也被忽略
害学习之路,王者荣耀为绊脚石。