identificeren van verschillende soorten bouten via Python (image recognition)

Goedenmiddag,

Ik ben met een project bezig waarbij ik via Python (openCV) de afmetingen van een willekeurig (metrisch) boutje wil herkennen. Omdat ik nog redelijk nieuw ben met python ben ik nog steeds erg zoekende naar informatie. Welnu staan er een heleboel basis filmpjes op youtube, en basic object herkenning uitleg waar ze uitleggen hoe je een driehoek, vierkant etc kan herkennen, maar de informatie die dieper gaat kan ik niet goed vinden.

Welnu wat ik dus probeer te maken is een programma wat een foto inlaad, en kan bepalen welke lengte en dikte de bout is (de dikte zegt direct iets over de maat, M2, M3, M4 etc.)

Mijn idee was als volgt: Ik neem een foto van de bout en zorg ervoor dat ik in het programma de kop van de bout kan onderscheiden van het draadeind van de bout. (de kop heb ik tenslotte niet nodig). Vervolgens teken ik een contour om het draadeind wat over is gebleven heen, en daarna zal het relatief eenvoudig zijn om de afmeting van dit contour (een rechthoek)
Mijn vraag: Hoe krijg ik dit voor elkaar? Ik ben al zover gekomen dat ik het contour van de bout heb. (zie foto)

Nu kreeg ik dus de tip om de functie np.count_nonZero te gebruiken, maar het is mij nog niet echt duidelijk wat deze functie doet. Zou iemand die dat wel weet dat misschien willen uitleggen? :) En daarnaast is deze volgens mij alleen te gebruiken als de bout mooi horizontaal ligt? Werkt dit ook nog als de bout onder een hoek van 45 graden op de foto ligt?

PS: Om de afmeting van de bout te bepalen zal er naast de bout altijd een liniaal worden geplaatst ter referentie, mochten jullie het willen weten

Het zou een mooi klusje kunnen zijn voor machine learning. Je 'voert' duizenden bouten met bekende data in en de software gaat onbekende bouten ook juist herkennen.

Google eens 'Tensor flow'

Gebruik je opencv hiervoor ? Dit is een vrij krachtige vision library, waarmee het zeker mogelijk is om objecten onder hoek te herkennen.

Op 13 september 2020 18:39:42 schreef RP6conrad:
Gebruik je opencv hiervoor ? Dit is een vrij krachtige vision library, waarmee het zeker mogelijk is om objecten onder hoek te herkennen.

Correct, ik gebruik OpenCV. Dat had ik moeten plaatsen ipv Python

Meer dan duizend onderdelen/bevestigings-materialen, hebben een DIN-norm.

Tik bv. als zoekterm even "Din 931" in en je hebt een voorbeeld/foto/tekening en de technische gegevens.Dit werk werd reeds voorheen uitgevoerd.

benleentje

Golden Member

Kan je niet gewoon de pixel tellen, moet e.e.a. wel gekalibreerd zijn op juiste maatvoeren.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

In MagPi heb ik een artikel gelezen over een robot met camera hoe die in Python de weg vindt, misschien in dit een idee als je in Python verder wilt gang.

High met Henk

Special Member

Let ook even op: als je zomaar M8 roept: er is ook M8 X 1 en M8 X 0,75. (std is M8 x 1.25)
En dan heb ik het alleen nog maar over ISO

maar er is ook
BSP / BSPT
NPS / NPT
BSW (withworth) / UTS

En dat past allemaal net niet.
M10 x 1 past net wel in 1/4 NPS en loopt net vast in de NPT....

Vraag is hoe ver je wilt gaan..
Kan er ook iets voorbij komen wat GEEN bout is?

[Bericht gewijzigd door High met Henk op maandag 14 september 2020 18:10:00 (14%)

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Op 14 september 2020 17:39:56 schreef benleentje:
Kan je niet gewoon de pixel tellen, moet e.e.a. wel gekalibreerd zijn op juiste maatvoeren.

Precies, maar het probleem is dat de bouten niet altijd horizontaal of verticaal op de foto staan. Ze liggen onder een willekeurige hoek.
Dit is wat ik tot nu toe heb. (de euromunt dient ter referentie voor de maatvoering)

Pixels tellen wordt dus lastig. Een optie zou nog zijn om de afbeelding te kantelen totdat de bout horizontaal of verticaal ligt.
Ik heb geprobeerd de kop te detecteren via template match, maar dit mocht niet baten.
Het template is ook opgenomen in de bijlagen (templatekop). Geen idee waarom die de horizontale bout als match ziet en de verticale (Waarvan het template is genomen) niet.

Op 14 september 2020 18:09:19 schreef High met Henk:

Kan er ook iets voorbij komen wat GEEN bout is?

Voorlopig niet. (behalve de euromunt dan)

Wordt er niet veel gedaan met hoeken in openCV? Corner detection.

Een silhouet van een bout heeft altijd 8 hoeken. Daarna wat wiskunde om dw afstanden te berekenen.

Even voor je gegoogeld. Dit vond ik nog interessanter:

https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/

Als je de maat hebt van de twee rechthoeken dan ben je er toch? Eventueel met een referentievorm erbij.