Openmv recognizes TWO-DIMENSIONAL code, color recognition and serial port communication
Objective Two-dimensional code recognition color recognition serial port communication complete code
purpose
1. Specify the content of the QR code: “XXX + XXX”, identify, return and send the corresponding serial number to the serial port; 2. Identify the color of materials in order according to the content of the two-dimensional code
3. Turn on the green light when standby, turn on the blue light when performing the action, and turn off the LED when the action is over.
Two-dimensional code recognition
while(True):
img = sensor.snapshot()
img.lens_corr(1.8)
for code in img.find_qrcodes():
output_str="%s" % code.payload()
#output_str is QR code content
Attached (Forage TWO-DIMENSIONAL code generator)
Color identification
#Color Threshold
green_threshold = (73, 96, -79, -22, -128, 127)
red_threshold = (41, 61, 42, 127, -128, 127)
blue_threshold = (22, 67, 9, 127, -128, -54)
blobs = img.find_blobs([green_threshold,red_threshold,blue_threshold],x_stride=25,y_stride=50,area_threshold=1000)
for b in blobs:
img.draw_rectangle(b[0:4]) # rect
#Mark the target color area with a rectangle
img.draw_cross(b[5], b[6]) # cx, cy
# draw a cross in the center of the target color area
print(b[8]) # b[8] is the color code, red=2,green=1,blue=4
A serial port communication
if uart.any():# determine if data is received
getrx = uart.readline()# read data
uart.write('abc')#Send data
The complete code
import sensor, image, time, pyb
import ujson
from pyb import UART
green_threshold = (73, 96, -79, -22, -128, 127)
#(0, 100, -128, -25, -128, 127)
red_threshold = (41, 61, 42, 127, -128, 127)
#(41, 61, 42, 127, -128, 127)
blue_threshold = (22, 67, 9, 127, -128, -54)
#(15, 100, -128, 127, -128, -41)
#red=2,green=1,blue=4
getrx = 0
getcmd = 0
renum = 0
colornum = 0
ptrposition = 0
sensor.reset()# Initialize the camera
sensor.set_pixformat(sensor.RGB565)# formatted as RGB565.
sensor.set_framesize(sensor.QQVGA) # Use QQVGA for faster speed
sensor.skip_frames(time = 2000) # Skip 2000s, make the new settings take effect, and adjust the white balance automatically
sensor.set_auto_gain(False) # Turn off auto gain. The default is on, in the color recognition, make sure to turn off the white balance.
sensor.set_auto_whitebal(False)
# Turn off white balance. White balance is on by default. In color recognition, be sure to turn off white balance.
clock = time.clock() # Track frame rate
led = pyb.LED(1) # Red LED = 1, Green LED = 1, Blue LED = 2, IR LEDs = 4.
uart = UART(3, 115200, timeout_char = 1000)
led.on()
def Rec_NUM1(lista):
if (lista[0]=='1' and lista[1]=='2' and lista[2]=='3'):
return 1
elif (lista[0]=='1' and lista[1]=='3' and lista[2]=='2'):
return 2
elif (lista[0]=='2' and lista[1]=='1' and lista[2]=='3'):
return 3
elif (lista[0]=='2' and lista[1]=='3' and lista[2]=='1'):
return 4
elif (lista[0]=='3' and lista[1]=='1' and lista[2]=='2'):
return 5
elif (lista[0]=='3' and lista[1]=='2' and lista[2]=='1'):
return 6
def Rec_NUM2(lista):
if (lista[4]=='1' and lista[5]=='2' and lista[6]=='3'):
return 1
elif (lista[4]=='1' and lista[5]=='3' and lista[6]=='2'):
return 2
elif (lista[4]=='2' and lista[5]=='1' and lista[6]=='3'):
return 3
elif (lista[4]=='2' and lista[5]=='3' and lista[6]=='1'):
return 4
elif (lista[4]=='3' and lista[5]=='1' and lista[6]=='2'):
return 5
elif (lista[4]=='3' and lista[5]=='2' and lista[6]=='1'):
return 6
while(True):
clock.tick() # Track elapsed milliseconds between snapshots().
if uart.any():
led.off()
getrx = uart.readline()
time.sleep(150) #Time delay 150ms
led = pyb.LED(2)
led.on()
getcmd = int(getrx)
print(getcmd)
# print(img.find_qrcodes())
img = sensor.snapshot()# 从The light-sensitive chip acquires an image
img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
blobs = img.find_blobs([green_threshold,red_threshold,blue_threshold],x_stride=25,y_stride=50,area_threshold=1000)
if(getcmd==2):
for code in img.find_qrcodes():
output_str="%s" % code.payload() #Method 1
renum = int(Rec_NUM1(output_str)*10 + Rec_NUM2(output_str))
uart.write(ujson.dumps(renum))
getcmd = 0
led.off()
if blobs and getcmd==3:
for b in blobs:
# Draw a rect around the blob.
img.draw_rectangle(b[0:4]) # rect
#Mark the target color area with a rectangle
img.draw_cross(b[5], b[6]) # cx, cy
# Draw a cross in the center of the target color area
#print(b[5], b[6], b[8])
#uart.write(ujson.dumps(b[8]))
#transfer color serial number to race serial number
if b[8]==1:
colornum=2
elif b[8]==2:
colornum=1
elif b[8]==4:
colornum=3
print('colornum=',colornum,'output_str[ptrposition]=',output_str[ptrposition])
#If the task code corresponds to
if (int(output_str[ptrposition]) == colornum):
uart.write('t')
ptrposition+=1
if ptrposition==4:
ptrposition+=1
getcmd=0
Read More:
- Vue mutui identify (Image Verification Code)
- Error:Request failed with status code 401 [How to Solve]
- [Solved] VS Code Debug JavaScript Error: “crbug/1173575, non-JS module files deprecated”
- npm ERR code ELIFECYCLE [How to Solve]
- [Solved] The code checked with flow.js does not report an error
- npm install error code EINTEGRITY sha1 [How to Solve]
- [Solved] bug: error Command failed with exit code 1.
- Failed to execute ‘setRequestHeader’ on ‘XMLHttpRequest’: String contains non ISO-8859-1 code point.
- [Solved] Vue3 npm ERR code ERR_SSL_DECRYPTION_FAILED_OR_BAD_RECORD_MAC
- [Solved] error C:\Users\HP\Desktop\VueProject\vue_cli\node_modules\node-sass: Command failed.Exit code: 1
- [Solved] npm install Error: error code ERR_SOCKET_TIMEOUT
- How to Solve QT uses MSVC compiler to code error
- [Solved] npm Install vuex Error: npm ERR! code ERESOLVE
- [Solved] VS Code Error: Vetur can‘t find ‘tsconfig.json‘ or ‘jsconfig.json‘
- [Solved] Prittier format code error: JSON Error in…
- [Solved] Console Error: Error: Request failed with status code 405
- [Solved] Package Install Error: npm ERR code ERR_SOCKET_TIMEOUT npm ERR
- [Solved] Vue2 Cross-domain Error: AxiosError net::ERR_FAILED, Network Error, ERR_NETWORK
- WPF: How to implement Text Stroke
- [Solved] vuecli2+axios Error: NotSameOriginAfterDefaultedToSameOriginByCoep