diff --git a/script/LedDetection.py b/script/LedDetection.py index 0c52af6..23b0d87 100644 --- a/script/LedDetection.py +++ b/script/LedDetection.py @@ -2,6 +2,7 @@ # Example of using ImageJ functionalities through ijutils. ################################################################################################### +import datetime from ijutils import * import java.awt.Color as Color @@ -21,14 +22,25 @@ def detect_led(ip): """ roi_center = (2322, 1025) -roi_radius = 700 -integration_count = 10 +roi_radius = 675 +integration_count = 5 integration_continuous = False integration_partial = False frames = [] +roi = (roi_center[0] - roi_radius, roi_center[1] - roi_radius, 2* roi_radius, 2*roi_radius) +color_roi = Color(0, 128, 0) + +renderer = show_panel(img) +renderer.clearOverlays() +ov_roi_shape = Ellipse(Pen(color_roi, 0,), java.awt.Point(roi[0], roi[1]), java.awt.Dimension(roi[2], roi[3])) +ov_roi_bound = Rect(Pen(color_roi, 0, Pen.LineStyle.dotted), java.awt.Point(roi[0], roi[1]), java.awt.Dimension(roi[2], roi[3])) +ov_roi_center = Crosshairs(Pen(color_roi, 0), java.awt.Point(roi_center[0],roi_center[1]), java.awt.Dimension(15,15)) + +renderer.addOverlays([ov_roi_shape, ov_roi_bound,ov_roi_center]) + """ def in_roi(x,y): @@ -66,8 +78,6 @@ class MyFilter(Filter): """ - - def in_roi(x,y): return math.hypot(x-roi_radius, y-roi_radius) < roi_radius @@ -75,17 +85,16 @@ def in_roi(x,y): def integrate (ips): for i in range(len(ips)): if i==0: - aux = new_image(2* roi_radius, 2*roi_radius, image_type="float", title = "sum", fill_color = None) + aux = new_image(roi[2], roi[3], image_type="float", title = "sum", fill_color = None) op_image(aux, ips[i], "add", float_result=True, in_place=True) op_const(aux, "divide", len(ips), in_place=True) return aux last_ret = (None, None) - def detect_led(ip): global roi_center, roi_radius, integration_count, integration_continuous, integration_partial, frames - global count , last_ret - aux = sub_image(ip, roi_center[0] - roi_radius, roi_center[1] - roi_radius, 2* roi_radius, 2*roi_radius) + global count , last_ret + aux = sub_image(ip, roi[0], roi[1], roi[2], roi[3]) grayscale(aux) gaussian_blur(aux) @@ -106,9 +115,9 @@ def detect_led(ip): #subtract_background(aux) auto_threshold(aux) #binary_open(aux) - (results,output) = analyse_particles(aux, 400,4000, + (results,output) = analyse_particles(aux, 500,4000, fill_holes = True, exclude_edges = True,print_table=False, - output_image = "outlines", minCirc = 0.4 + output_image = "outlines", minCirc = 0.3 , maxCirc = 1.0) r=results @@ -130,8 +139,12 @@ def detect_led(ip): last_ret = (results,output) if not integration_continuous: frames = [] - return (results,aux) - #return (results,output) + + if r.counter==10: + save_image(output, "{images}/" + str(datetime.datetime.now())+".png", "png") + # output. + #return (results,aux) + return (results,output) @@ -145,7 +158,7 @@ class MyFilter(Filter): (results,output) = detect_led(ip) if output is not None: invert(output) - output = pad_image(output, roi_center[0] - roi_radius, 0, roi_center[1] - roi_radius, 0) + output = pad_image(output, roi[0], 0,roi[1], 0) op_image(ip, output, "xor") return ip.getBufferedImage()