ManualCrop - Improved

Introductie

Bij het begin van ons project, waren er enkele grote bugs in de manuele crop functie:
  • Als de rekenmachine op zijn kop voor de camera lag, werd het beeld niet 180 graden gedraait na het croppen;
  • Bij een hoek van 90 graden, werd het gekropte beeld een dun lijntje, wat niet meer leesbaar was voor mens en computer;
  • Bij hoeken tussen de 0 en 90 graden, misvormde het gecropte plaatje buiten de grenzen van de gekozen vlakte.

Doel

Er was duidelijk iets gaande met de draaiing tijdens het manueel croppen. Het doel was om de bovenstaande problemen op te lossen, met een vernieuwde manuele crop functionaliteit. Hierbij moest met name de bovenstaande punten 1 en 2 worden opgelost.

Aanpak

De aanpak vroeg om een fikse aanpassing van de huidige functie.
  • Door de klikactie van de gebruiker wilde we dat het demo programma wist wat de boven- en onderkant was van het gecropte plaatje, ongeacht de hoek.
  • Door het programma zelf de vierhoek te laten berekenen en maken, krijg je geen vervormingen meer in de crop. Als de crop niet goed is, kun je opnieuw croppen door op ‘r’ te drukken.
  • Het volledige plaatje (geschoten door de webcam/PiCamera) moet draaien om het middelpunt van het te croppen deel, en dan pas croppen. Dit zorgt ervoor dat de pixels recht worden gecropt.

Met deze ideeën in het achterhoofd zijn de testen aangepast (TDD) en vervolgens is de code aangepast.

Testen

Alle testen uit het testbestand TestManualDetect.py zijn aangescherpt aan de hand van de nieuwe criteria, en vervolgens geslaagd na aanpassing van de code. Er zijn twee testen toegevoegd:
  • Te weinig muisklikken (manuel_detect functie)
  • Te veel muisklikken (click_and_detect functie)
  • Een vierhoek tekenen buiten het gebied van het plaatje (dit is nu mogelijk omdat punt 3 en 4 uitgerekend worden aan de hand van een muisklik binnen het plaatje)

Conclusie

De feature is succesvol aangepast en getest. Er hoeft nu nog maar drie keer geklikt te worden door de gebruiker: In de bovenhoeken en op de onderrand (maakt niet uit waar) van het rekenmachinedisplay, zo weet het programma waar de onderkant van het display is. Dit werkt bij 45, 90, 180 graden, en alles wat daar tussen zit. Als een vierhoek buiten de grenzen van het plaatje is, zegt het programma dat de selectie niet goed is.

Aanbevelingen

Er moet nog gekeken worden naar de implementatie van de automatische crop functie. Die werkt nu niet meer altijd. Dit heeft te maken met de berekening van de constanten (b).