mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
The morph function lets you convolve the image with a kernel. It's decently fast right now. But, in the future we'll have to optimize it by a lot (unrolling loops, using SIMD instructions, etc.). Anyway, along with morph I added an edge detection test script showing how you can use a high pass filter on an image to get all the edges in it. This is not as good as canny edge dection... but, it's about the same and fast enough. We'll need a Hough Transform system in the future to make edge dection useful. Not sure how that will be implemented... so, that's going to be far away for now.
24 lines
820 B
Python
24 lines
820 B
Python
# Edge Detection Example:
|
|
#
|
|
# This example demonstrates using the morph function on an image to do edge
|
|
# detection and then thresholding and filtering that image afterwards.
|
|
|
|
import sensor, image
|
|
|
|
kernel_size = 1 # kernel width = (size*2)+1, kernel height = (size*2)+1
|
|
kernel = [-1, -1, -1,\
|
|
-1, +8, -1,\
|
|
-1, -1, -1]
|
|
# This is a high pass filter kernel. ee here for more kernels:
|
|
# http://www.fmwconcepts.com/imagemagick/digital_image_filtering.pdf
|
|
thresholds = [(100, 255)] # grayscale thresholds
|
|
|
|
sensor.reset()
|
|
sensor.set_framesize(sensor.QQVGA) # smaller resolution to go faster
|
|
sensor.set_pixformat(sensor.GRAYSCALE)
|
|
while(True):
|
|
img = sensor.snapshot()
|
|
img.morph(kernel_size, kernel)
|
|
img.binary(thresholds)
|
|
img.erode(1, threshold = 2) # erode pixels with less than 2 neighbors
|