################################################################################################### # Procedure to detect the puck light spots. ################################################################################################### img.backgroundEnabled=False led_ctrl1.write(0.0) led_ctrl2.write(0.0) time.sleep(0.1) img.waitNext(100) background = average_frames(5) #img.backgroundImage=background.bufferedImage #img.captureBackground(1,0) #show_panel(img.backgroundImage) #img.backgroundEnabled = True led_ctrl1.write(0.40) led_ctrl2.write(0.40) time.sleep(0.1) img.waitNext(100) image = average_frames(5) led_ctrl1.write(0.0) led_ctrl2.write(0.0) op_image(image, background, "subtract", float_result=True, in_place=True) renderer = show_panel(image.getBufferedImage()) renderer.clearOverlays() invert(image) auto_threshold(image, method = "MaxEntropy") #Tested ok: MaxEntropy, Triangle, Yen #binary_open(aux) (r,output) = analyse_particles(image, 150,1000, fill_holes = True, exclude_edges = False, print_table=False, output_image = "outlines", minCirc = 0.3 , maxCirc = 1.0) points = "" npoints = 0 x=[] y=[] for row in range (r.counter): if in_roi(r.getValue("XM",row), r.getValue("YM",row)): #x, y = int(r.getValue("XM", row))+roi[0], int(r.getValue("YM", row))+roi[1] x.append(int(r.getValue("XM", row))) y.append(int(r.getValue("YM", row))) points = points + " (" + str(x[-1]) + ", " + str(y[-1]) + ")" npoints = npoints + 1 renderer.addOverlay(Crosshairs(Pen(java.awt.Color.MAGENTA), java.awt.Point(x[-1],y[-1]), java.awt.Dimension(15,15))) print str(npoints) + " - " + points print r print x print y offset = int(math.sqrt(1000)/2) cv = (min(x)-offset, min(y)-offset, max(x)+offset, max(y)+offset) renderer.addOverlay(Rect(Pen(java.awt.Color.MAGENTA), java.awt.Point(cv[0], cv[1]), java.awt.Dimension(cv[2]-cv[0],cv[3]-cv[1]))) #show_panel(output.getBufferedImage()) #img.backgroundEnabled=False