Jul-10-2018, 06:04 AM
Hello, need help. I am trying to build a light spectrometer on a raspberry PI 3 from "http://blog.durablescope.com/post/BuiltASpectrometer/"
when i implement spectrometer.py file I get this message:
"File "spectrometer.py", line 42
def find_aperture(pic_pixels, pic_width: int, pic_height: int) -> object:
^
SyntaxError: invalid syntax"
here is part of code:
when i implement spectrometer.py file I get this message:
"File "spectrometer.py", line 42
def find_aperture(pic_pixels, pic_width: int, pic_height: int) -> object:
^
SyntaxError: invalid syntax"
here is part of code:
import sys import math import time import picamera from fractions import Fraction from collections import OrderedDict from PIL import Image, ImageDraw, ImageFile, ImageFont # scan a column to determine top and bottom of area of lightness def get_spectrum_y_bound(pix, x, middle_y, spectrum_threshold, spectrum_threshold_duration): c = 0 spectrum_top = middle_y for y in range(middle_y, 0, -1): r, g, b = pix[x, y] brightness = r + g + b if brightness < spectrum_threshold: c = c + 1 if c > spectrum_threshold_duration: break else: spectrum_top = y c = 0 c = 0 spectrum_bottom = middle_y for y in range(middle_y, middle_y * 2, 1): r, g, b = pix[x, y] brightness = r + g + b if brightness < spectrum_threshold: c = c + 1 if c > spectrum_threshold_duration: break else: spectrum_bottom = y c = 0 return spectrum_top, spectrum_bottom # find aperture on right hand side of image along middle line def find_aperture(pic_pixels, pic_width: int, pic_height: int) -> object: middle_x = int(pic_width / 2) middle_y = int(pic_height / 2) aperture_brightest = 0 aperture_x = 0 for x in range(middle_x, pic_width, 1): r, g, b = pic_pixels[x, middle_y] brightness = r + g + b if brightness > aperture_brightest: aperture_brightest = brightness aperture_x = x aperture_threshold = aperture_brightest * 0.9 aperture_x1 = aperture_x for x in range(aperture_x, middle_x, -1): r, g, b = pic_pixels[x, middle_y] brightness = r + g + b if brightness < aperture_threshold: aperture_x1 = x break aperture_x2 = aperture_x for x in range(aperture_x, pic_width, 1): r, g, b = pic_pixels[x, middle_y] brightness = r + g + b if brightness < aperture_threshold: aperture_x2 = x break aperture_x = (aperture_x1 + aperture_x2) / 2 spectrum_threshold_duration = 64 aperture_y_bounds = get_spectrum_y_bound(pic_pixels, aperture_x, middle_y, aperture_threshold, spectrum_threshold_duration) aperture_y = (aperture_y_bounds[0] + aperture_y_bounds[1]) / 2 aperture_height = (aperture_y_bounds[1] - aperture_y_bounds[0]) * 0.9 return {'x': aperture_x, 'y': aperture_y, 'h': aperture_height, 'b': aperture_brightest}Thank you