Je veux saisir la couleur d'un pixel avec des coordonnées connues sur mon bureau Linux. P>
Jusqu'à présent, j'ai utilisé Cela fait le travail, mais étant donné que l'importation attrape toute la fenêtre avant de recadrer, c'est très lent: ( P>
Y a-t-il un moyen intelligent pour saisir la couleur d'un seul pixel? Je connais les deux relatives (fenêtre) et les coordonnées absolues. p>
Un script Python ou Shell serait préférable, mais si vous connaissez une intelligente C / x11 Fonctions, s'il vous plaît laissez-moi savoir :) p> "Import -Window quelque Windowow -crop 1x1 + x + y /tmp/grab.jpg" code>
Ensuite, extraire la valeur de pixel à l'aide de Python et PIL . P>
4 Réponses :
Cela fait l'affaire, mais nécessite Python-GTK: sur Ubuntu 9.10, cela nécessite également Python-Numpy ou SEGFault l'interpréteur de Python sur le get_pixels_array code > ligne. Ubuntu 10.04 Il a toujours cette exigence, ou cela provoque un importerror concernant Numpy.core.Multiarray. P> P>
Est-ce que je remarque une lenteur, si je dois vérifier quelque 200 pixels par seconde?
Travaillé comme un charme! : D Si quelqu'un s'intéresse à un script qui saute Spotify publics, faites le moi savoir.
200 pix-Per-Per-Per-Second - Vous pouvez transmettre une liste des pixels pour vérifier et le retirer de la matrice de pixels. Devrait être ok-ish vitesse sage.
@Joernsn sauter des annonces Spotify? Oh bien, les temps ont changé ..: D
Si vous utilisez KDE4, un widget de sélection de couleurs que vous pouvez ajouter à votre panneau ou à votre bureau. Pour ajouter le widget soit Faites un clic droit sur le bureau et choisissez Ajouter un widget OU Faites un clic droit sur le panneau et choisissez Options du panneau> Ajouter des widgets p>
Voici une fonction beaucoup plus rapide basée sur richq em> 's Réponse .
Celui-ci lit seulement un pixel à partir de l'écran au lieu d'obtenir un énorme éventail de tous les pixels. >>> pixel_at(25, 5)
(143, 178, 237)
Utilisation de gi.Repository GDK, il est encore plus petit et fonctionne sur Python 2 ou 3:
#!/usr/bin/python3 # Print RGB color values of screen pixel at location x, y from gi.repository import Gdk import sys def PixelAt(x, y): w = Gdk.get_default_root_window() pb = Gdk.pixbuf_get_from_window(w, x, y, 1, 1) return pb.get_pixels() print(tuple(PixelAt(int(sys.argv[1]), int(sys.argv[2]))))