ich mit so etwas wie dies gehen würde.
den Kontrast des Bildes reduzieren den hellsten, wie 240 etwas weißeste Pixel, indem statt 255 so, dass die Weiße im Allgemeinen innerhalb des Bildes und innerhalb von Teilen des Produkts sind nicht mehr reinweiß gefunden.
Setzen Sie einen 1 Pixel breiten weißen Rahmen um das Bild - das ist der Floodfill im nächsten Schritt zu ermöglichen „fließen“ der ganzen Weg um den Rand (auch wenn das „Produkt“ die Ränder berührt von der Rahmen) und "sickern" in das Bild von allen Grenzen/Kanten.
Floofdill Ihr Bild beginnt in der oberen linken Ecke (was nach Schritt 2 notwendigerweise rein weiß ist) und erlaubt eine Toleranz von 10-20% bei der Anpassung des Weiß, falls der Hintergrund weiß oder leicht schattiert ist. und das Weiß wird um die Ränder herum in dein Bild fließen, bis es das Produkt in der Mitte erreicht.
Sehen Sie, wie viele reine weiße Pixel Sie jetzt haben - das sind die Hintergrundbilder. Der Prozentsatz an reinen weißen Pixeln gibt Ihnen einen Indikator für das Vertrauen in das Bild, das ein Produkt auf einem weißlichen Hintergrund ist.
ich ImageMagick von der Kommandozeile wie folgt verwenden würde: wird
convert product.jpg +level 5% -bordercolor white -border 1 \
-fill white -fuzz 25% -draw "color 0,0 floodfill" result.jpg
ich auf Stackoverflow weißen Hintergrund nur so können Sie die Ränder mit einem roten Rand setzen um die folgenden zwei Bilder sehen und zeigen Sie die Vorher-Nachher-Bilder - betrachten Sie die Menge an Weiß in den resultierenden Bildern (es gibt keine in der zweiten, weil es keinen weißen Hintergrund hatte) und auch im Schatten unter dem Router, um die Wirkung der -fuzz
zu sehen .
Vor
Nach
Wenn Sie möchten, dass als Prozentsatz, können Sie alle nicht-weißen Pixel schwarz machen und dann den Prozentsatz berechnen von weißen Pixeln wie folgt:
convert product.jpg -level 5% \
-bordercolor white -border 1 \
-fill white -fuzz 25% -draw "color 0,0 floodfill" -shave 1 \
-fuzz 0 -fill black +opaque white -format "%[fx:int(mean*100)]" info:
62
Vor
Nach
ImageMagick hat P onth-Bindungen, so dass Sie das oben genannte in Python tun könnten - oder Sie könnten OpenCV und Python verwenden, um denselben Algorithmus zu implementieren.
Verwenden Sie OpenCV für jede Bildverarbeitung! – linusg
@linusg Kennen Sie eine bestimmte Strategie mit OpenCV? –
Schauen Sie sich http://pyimageSearch.com für gute Tuts an. Suche einfach danach, du wirst etw. Finden. Das war der Ort, wo ich tiefer in OpenCV ging. – linusg