mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Moved feature detection scripts into their own folders and added explict frame_skip value per Ibrahim's request. Finished working on snapshot and video recording scripts for next release. ... From CMUcam4 work I learned that people will just want examples that do "X" thing. So, in general, our examples should include a simple script showing off a feature and then a more complex script that does "X" where "X" is some app that a person would want. For example, we'll get reuqests for face tracking with servos, and movement detection with servos. So, instead of answering this question a million times with an example script we'll just have examples for all kinds of things people will want. Gotta automate dealing with help support at the end of the day...
69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
import sensor, time, pyb
|
|
|
|
def test_int_adc():
|
|
adc = pyb.ADCAll(12)
|
|
# Test VBAT
|
|
vbat = adc.read_core_vbat()
|
|
vbat_diff = abs(vbat-3.3)
|
|
if (vbat_diff > 0.1):
|
|
raise Exception("INTERNAL ADC TEST FAILED VBAT=%fv"%vbat)
|
|
|
|
# Test VREF
|
|
vref = adc.read_core_vref()
|
|
vref_diff = abs(vref-1.2)
|
|
if (vref_diff > 0.1):
|
|
raise Exception("INTERNAL ADC TEST FAILED VREF=%fv"%vref)
|
|
adc = None
|
|
print("\nINTERNAL ADC TEST PASSED...")
|
|
|
|
def test_color_bars():
|
|
sensor.reset()
|
|
# Set sensor settings
|
|
sensor.set_brightness(0)
|
|
sensor.set_saturation(0)
|
|
sensor.set_gainceiling(8)
|
|
sensor.set_contrast(2)
|
|
|
|
# Set sensor pixel format
|
|
sensor.set_framesize(sensor.QVGA)
|
|
sensor.set_pixformat(sensor.RGB565)
|
|
|
|
# Enable colorbar test mode
|
|
sensor.set_colorbar(True)
|
|
|
|
# Skip a few frames to allow the sensor settle down
|
|
# Note: This takes more time when exec from the IDE.
|
|
for i in range(0, 10):
|
|
image = sensor.snapshot()
|
|
|
|
#color bars thresholds
|
|
t = [lambda r, g, b: r < 50 and g < 50 and b < 50, # Black
|
|
lambda r, g, b: r < 50 and g < 50 and b > 200, # Blue
|
|
lambda r, g, b: r > 200 and g < 50 and b < 50, # Red
|
|
lambda r, g, b: r > 200 and g < 50 and b > 200, # Purple
|
|
lambda r, g, b: r < 50 and g > 200 and b < 50, # Green
|
|
lambda r, g, b: r < 50 and g > 200 and b > 200, # Aqua
|
|
lambda r, g, b: r > 200 and g > 200 and b < 50, # Yellow
|
|
lambda r, g, b: r > 200 and g > 200 and b > 200] # White
|
|
|
|
#320x240 image with 8 color bars each one is approx 40 pixels.
|
|
#we start from the center of the frame buffer, and average the
|
|
#values of 10 sample pixels from the center of each color bar.
|
|
for i in range(0, 8):
|
|
avg = (0, 0, 0)
|
|
idx = 40*i+20 #center of colorbars
|
|
for off in range(0, 10): #avg 10 pixels
|
|
rgb = image.get_pixel(idx+off, 120)
|
|
avg = tuple(map(sum, zip(avg, rgb)))
|
|
|
|
if not t[i](avg[0]/10, avg[1]/10, avg[2]/10):
|
|
raise Exception("COLOR BARS TEST FAILED. "
|
|
"BAR#(%d): RGB(%d,%d,%d)"%(i+1, avg[0]/10, avg[1]/10, avg[2]/10))
|
|
|
|
print("COLOR BARS TEST PASSED...")
|
|
|
|
if __name__ == "__main__":
|
|
print("")
|
|
test_int_adc()
|
|
test_color_bars()
|