Herausforderung
Schreiben Sie Code, der bei einem Bild eines Panels aus einem zufälligen xkcd-Comic einen Wahrheitswert zurückgibt, wenn sich Blackhat im Comic befindet oder wenn nicht.
Wer ist Blackhat?
Blackhat ist der inoffizielle Name der Figur in XKCD-Comics, die einen schwarzen Hut trägt:
Entnommen aus der Erklärung der xkcd-Seite zu Blackhat
Der Hut von Blackhat ist immer gerade, schwarz und sieht genauso aus wie auf dem obigen Bild.
Andere Charaktere haben möglicherweise auch Hüte und Haare, aber keine hat Hüte, die schwarz und gerade sind.
Eingang
Das Bild kann in beliebiger Weise eingegeben werden, ob es sich um einen Pfad zum Bild oder um Bytes über STDIN handelt. Sie sollten keine URL als Eingabe benötigen.
Regeln
Das Hardcodieren der Antwort ist nicht verboten, wird aber nicht gewürdigt.
Sie dürfen nicht auf das Internet zugreifen, um die Antwort zu erhalten.
Beispiele
Alle Bilder stammen aus Bildern von https://xkcd.com
Blackhat ist im Panel (Return truthy
)
Blackhat ist nicht im Panel (Return falsey
)
Batterie testen
Die 20 Bilder, die Blackhat enthalten, finden Sie hier: https://beta-decay.github.io/blackhat.zip
Die 20 Bilder, die keinen Blackhat enthalten, finden Sie hier: https://beta-decay.github.io/no_blackhat.zip
Wenn Sie möchten, dass mehr Bilder Ihre Programme testen (um auf die mysteriösen Testfälle zu trainieren), finden Sie hier eine Liste aller Erscheinungsbilder von Blackhat: http://www.explainxkcd.com/wiki/index.php/Category: Comics_featuring_Black_Hat
Gewinnen
Das Programm, das für die meisten Bilder korrekt identifiziert, ob Blackhat im Comic ist oder nicht, gewinnt. Ihre Kopfzeile sollte Ihre Punktzahl als Prozentsatz enthalten.
Im Falle eines Unentschieden erhalten die gebundenen Programme "mysteriöse" Bilder (dh solche, die nur ich kenne). Der Code, der am besten identifiziert, gewinnt den Tiebreak.
Die mysteriösen Bilder werden zusammen mit den Partituren enthüllt.
Hinweis: Es scheint, dass Randalls Name für ihn Hat Guy sein könnte. Ich bevorzuge allerdings Blackhat.
quelle
Antworten:
PHP (> = 7), 100% (40/40)
Um es auszuführen:
Beispiel:
Anmerkungen
Einige Beispiele für erkannte schwarze Hüte:
Diese Beispiele werden durch Zeichnen roter Linien an speziellen Punkten auf dem Bild erhalten, für die das Skript entschieden hat, dass sie einen schwarzen Hut haben (Bilder können im Vergleich zu Originalen eine Rotation aufweisen).
Extra
Bevor ich hier gepostet habe, habe ich dieses Skript mit einem anderen Satz von 15 Bildern getestet, 10 mit schwarzem Hut und 5 ohne schwarzen Hut, und es hat auch für alle von ihnen funktioniert (100%).
Hier ist die ZIP-Datei mit zusätzlichen Testbildern, die ich verwendet habe: extra.zip
Im
extra/blackhat
Verzeichnis sind auch die Erkennungsergebnisse mit roten Linien verfügbar. Zum Beispielextra/blackhat/1.png
ist das Testbild undextra/blackhat/1_r.png
ist das Erkennungsergebnis davon.quelle
imagerotate
eingebaut, so ...Matlab, 87,5%
Verbesserung der Vorgängerversion mit einigen Überprüfungen der Form der Kandidatenregionen.
Klassifizierungsfehler im HAT-Set : Bilder 4, 14, 15, 17 .
Klassifizierungsfehler im NON HAT Set : Bilder 4 .
Einige Beispiele für korrigierte klassifizierte Bilder:
Beispiel für ein falsch klassifiziertes Bild:
ALTE VERSION (77,5%)
Ansatz basierend auf Bildabtragung, ähnlich der von Mnemonic vorgeschlagenen Lösung, jedoch basierend auf dem V-Kanal des HSV-Bildes. Außerdem wird der Mittelwert des Kanals des ausgewählten Bereichs überprüft (nicht dessen Größe).
Klassifizierungsfehler im HAT-Satz : Bilder 4, 5, 10 .
Klassifizierungsfehler im NON HAT-Satz : Bilder 4, 5, 6, 7, 13, 14 .
quelle
Pyth , 62,5%
Akzeptiert den Dateinamen einer Bilddatei auf stdin. Kehrt zurück
True
wenn der Durchschnitt aller RGB-Farbkomponenten größer als 214 ist. Sie haben richtig gelesen: Anscheinend sind Schwarzhutbilder heller als Schwarzhutbilder.(Sicher kann jemand es besser machen - das ist kein Code-Golf !)
quelle
Python 2,
65%72,5%77,5% (= 31/40)Dadurch wird herausgefunden, welche Pixel schwarz sind, und es werden kleine zusammenhängende Teile abgetragen. Hier gibt es sicherlich Verbesserungspotential.
quelle