help!

Discussion related to "under the hood" OpenMV topics.
scspenc
Posts: 2
Joined: Sun Nov 17, 2019 9:49 pm

help!

Postby scspenc » Sat Dec 07, 2019 1:16 am

Hi I am new to micropython and the open MV cam h7. I am attempting to control a motor when a color threshold is detected. I attached my code, can you tell me if I am going down the right path?


Code: Select all

# Multi Color Blob Tracking Example
#
# This example shows off multi color blob tracking using the OpenMV Cam.

import sensor, image, time, math

# Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max)
# The below thresholds track in general red/green things. You may wish to tune them...
thresholds = [(34, 54, 90, 45, 48, -116), # generic_red_thresholds
(30, 100, -64, -8, -32, 32), # generic_green_thresholds
(0, 15, 0, 40, -80, -20)] # generic_blue_thresholds
# You may pass up to 16 thresholds above. However, it's not really possible to segment any
# scene with 16 thresholds before color thresholds start to overlap heavily.


sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
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()

# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
# camera resolution. Don't set "merge=True" becuase that will merge blobs which we don't want here.

counter = 0
StartTime = clock
EndTime = clock + clock.tick(1000)


while(True):
clock.tick()
img = sensor.snapshot()
for blob in img.find_blobs(thresholds, pixels_threshold=200, area_threshold=200):



# These values depend on the blob not being circular - otherwise they will be shaky.
if blob.elongation() > 0.5:
img.draw_edges(blob.min_corners(), color=(255,0,0))
img.draw_line(blob.major_axis_line(), color=(0,255,0))
img.draw_line(blob.minor_axis_line(), color=(0,0,255))


# These values are stable all the time.
img.draw_rectangle(blob.rect())
img.draw_cross(blob.cx(), blob.cy())

# Adds to Counter to show that a Rectangle was Drawn.
if counter >= 30: # Turn off Motors.
if clock.tick() == 1000:
# Code for Motors to turnoff

if blob.color == blob.red()
# Code for sorting to the red chute
if blob.color == blob.blue()
# Code for sorting to the blue chute
if blob.color == blob.green()
# Code for sorting to the green chute


# Note - the blob rotation is unique to 0-180 only.
img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20)
print(clock.fps())
User avatar
kwagyeman
Posts: 3719
Joined: Sun May 24, 2015 2:10 pm

Re: help!

Postby kwagyeman » Sat Dec 07, 2019 4:37 pm

Hi, please use the code tags when posting. Also, this is not valid OpenMV Cam code:

Code: Select all

if blob.color == blob.red()
# Code for sorting to the red chute
if blob.color == blob.blue()
# Code for sorting to the blue chute
if blob.color == blob.green()
# Code for sorting to the green chute
Anyway, please ask a specific question. You basically are just asking folks to do your application when you ask if you are on the right path and not a specific question. Post like this are starting to come in everyday now and I might start not to reply them them much anymore.
Nyamekye,
scspenc
Posts: 2
Joined: Sun Nov 17, 2019 9:49 pm

Re: help!

Postby scspenc » Wed Dec 11, 2019 3:58 pm

My apologies. I didnt mean to upset you. I figured it out! Thank you for replying. I appreciate your time!
User avatar
kwagyeman
Posts: 3719
Joined: Sun May 24, 2015 2:10 pm

Re: help!

Postby kwagyeman » Wed Dec 11, 2019 6:20 pm

You didn't, glad you got it working.
Nyamekye,

Return to “Technical Discussion”

Who is online

Users browsing this forum: No registered users and 8 guests