I am new to OpenMV and just got my OpenMV H7. I want o find tangent lines to the edge curve at specific points in the ROI. As an example, I have uploaded a snapshot of a crack in the cement or wall. On the right side it is the same image with three examples of ROI shown by yellow rectangle. Assume a horizontal green line in the middle of the ROI. This line intersects with the crack edges at two points. I want to find tangent lines to the crack edges right at those two intersections, which are shown by red lines. I thought of doing an edge detection, then finding the intersecting points. I know the y of those points, since we know the location of the green line. I want to know what approach should I take to find the x points for intersections and then how to find the tangent lines equations. Is find_blobs an option too for this application?
No, just use the fin_line_segments() method or the get_regression() method. Get regression with the robust flag set basically does what you want.
Thank you for the direction!
I could not get a satisfactory results from find_line_segments() but I think get_regression() with robust flag works better. I use the following instructions:
img = sensor.snapshot().binary([THRESHOLD]) if BINARY_VISIBLE else sensor.snapshot()
line = img.get_regression([(255,255) if BINARY_VISIBLE else THRESHOLD], robust = True)
It shows me the edges of the crack. Should I examine all the pixels along one horizontal line (Y = constant) to find the X values of edges?
I am also thinking of another approach by shining a line e.g. red laser line to the object; capture the image; then filter the image to show only RED objects but, not using find_blobs.
Does OpenMV has color filter, something similar to what is shown in the attached picture?
Yeah, just use the binary method. This will get you the second image. For the third image you can mask out the color you just want to see by passing a mask into some of the methods in the library.