화면 좌표를 기준으로 픽셀의 색상을 반환하는 명령 줄 도구가 있습니까?


11

명령 줄 도구는 전적으로 그 기반으로 픽셀의 색상 값이 반환 화면 좌표는 .

그런 도구가 있습니까?

(또한 :이 도구에는 사용자 작업이 필요하지 않습니다. 스크립트에서 루프로 실행해야합니다.)


답변:


14

grabc 프로그램을 사용할 수 있습니다 . 마우스 포인터를 십자형으로 돌리고 선택한 색상의 HTML 및 RGB 값을 반환합니다.

sudo apt-get install grabc

단점 : 십자선이 충분히 얇지 않아 픽셀을 정확하게 선택할 수 없습니다.


다음과 같은 파이썬 스크립트를 만들 수도 있습니다.

#!/usr/bin/python -W ignore::DeprecationWarning
import sys
import gtk

def get_pixel_rgb(x, y):
    pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, 1, 1)
    pixbuf.get_from_drawable(gtk.gdk.get_default_root_window(),
                             gtk.gdk.colormap_get_system(), 
                             x, y, 0, 0, 1, 1)
    return pixbuf.get_pixels_array()[0][0]

print get_pixel_rgb(int(sys.argv[1]), int(sys.argv[2]))

실행 가능하게 만들고 pixel_rgb="$(/path/to/script.py x y)"bash 스크립트에서 실행 하십시오. 물론 스크립트를 원하는 방식으로 변경하고 오류 처리 등을 추가해야합니다.

추신 : DeprecationWarning에 대해 무엇이든 할 수 있는지 확실하지 않으므로 첫 번째 줄에서 해제했습니다.


고마워 감사하지만 다시 한 번 중요한 요구 사항을 생략했다는 것을 너무 늦게 알고 있습니다 ... 배치 스크립트의 루프에서 자동으로 실행되기를 원합니다. 이 작은 응용 프로그램에 대한 고마워요. 그것은 확실히 어느 정도 유용 할 것입니다 .. (그러나 "무인"을 실행할 나의 현재 sutuation을 위해)
Peter.O

htorque : 파이썬 스크립트는 수정 된 사양 (일반 사용자! 항상 사양 변경! :)에 완벽하게 맞습니다. 좌표에서 직접 작업하는 것이 "픽셀 패턴 찾기"절차에 훨씬 좋습니다. 커서를 방금 찾은 좌표로 xmacro 한 다음 마우스 오른쪽 버튼으로 xmacro 할 수 있습니다. 바로 목표에 .... 쉬운! (Pythonistas의 경우)
Peter.O

얻기 no module named numpy.core.multiarray; Segmentation fault. 어느 부분이이 모듈에 의존합니까?
Drew Chapin

6

약간 어색하지만 xdotool을 사용하면 마우스와 상호 작용할 수 있고 grabc는 화면에서 클릭 한 위치에서 색상을 얻을 수 있습니다.

sudo apt-get install xdotool grabc

grabc를 먼저 실행하지만 배경

grabc &

그런 다음 xdotool을 사용하여 마우스 클릭을 수행하십시오.

xdotool click 1

클릭은 grabc의 커서와 배경 프로세스가 색상을 출력하여 캡처됩니다.


흥미롭게도, misterben .. "클러 지"는 괜찮을 수 있습니다;) 최근에 한 말을 들었습니다. "검은 고양이, 흰 고양이, 얼룩 고양이 .. 마우스를 잡는 한"... 매크로 도구의 정보 페이지에서 픽셀에 관한 정보를 본 것을 모호하게 기억합니다. ... 화면에서 한 줄의 픽셀을 쿼리하고 싶습니다. grabc로 인한 커서 전환을 피하고 싶습니다 ... 이제 "grabc"가 실제로 작동하는 것을 보았습니다. 좌표를 기반으로 한 색상 (Windows 에서이 작업을 자주 수행했습니다 :( ... Linux와 비슷한 것이 있기를 바랍니다 :)
Peter.O

xdotool을 사용하여 포인터 좌표를 가져 와서 htorque의 python 스크립트와 함께 사용할 수 있습니다. xdotool getmouselocation | sed -e 's/x://' -e 's/y://' -e 's/ screen:.*$//'좌표를 잡고 공백으로 구분 된 xy 값으로 정리하여 해당 스크립트에 공급합니다.
misterben

misterben, 도와 주셔서 감사합니다. backgrouding (매우 편리함)에 대해 더 많이 배웠습니다 ... 처음 질문을했을 때 그것을 알지 못했지만 "좌표로 색상을 얻습니다"방법이 갈 길입니다.
Peter.O

난 그냥 당신의 시도에 도착했습니다 xdtool getmouselocation... 아주 좋은, 감사합니다 ... sed의 유용성은 나를 놀라게 유지!
Peter.O

3

xwdand를 사용하는 다른 솔루션 xdotool:

xwd -root -silent | convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:- | grep -om1 '#\w\+'

어디에 $X그리고 $Y당신의 좌표입니다.

Xorg의 일부로 xwd시스템에 사전 설치되어 있어야합니다. xdotool함께 설치할 수 있습니다 :

sudo apt-get install xdotool 

StackOverflow Q & A이 imagemagick.org 스레드 에 대한 @Christian답변을 기반으로 합니다 .


고마워, 그것은 작동하지만 htorque의 python 스크립트 (실제 0.097s 사용자 0.072s 시스 0.020s)보다 훨씬 느리지 만 (실제 0.363s 사용자 0.456s 시스 0.064s).
Peter.O

@ Peter.O 예, 그러나 파이썬과 가져온 라이브러리가 이미 메모리에 캐시되어있는 경우에만 해당됩니다. 콜드 스타트에서 파이썬 스크립트는 상당히 느려집니다. 따라서 스크립트가 가끔 만 실행되는 경우 내 솔루션을 사용하고 싶을 수도 있습니다. 추신 : 어떤 창을 검사하고 싶은지 알면 속도를 높일 수 있습니다. xwd특정 창 ID의 스크린 샷 찍기를 지원하므로 창 ID (예 :)를 쿼리 xdotool search --name "$Win" | head -n1한 다음로 전달할 수 xwd있습니다 xwd -id "$WinID" -silent | .... 참고 :이 경우 좌표는 창을 기준으로합니다.
Glutanimate

2

Macropolo라는 이와 같은 작업을 위해 Python 모듈을 작성했습니다. 그러나 단순히 화면에서 픽셀의 색상을 얻는 것보다 훨씬 더 많은 일을합니다.

내가 공유 한 포럼 게시물은 다음과 같습니다. http://ubuntuforums.org/showthread.php?t=2155281

이 모듈에는 화면 영역에서 특정 색상의 픽셀 수를 계산하고, 영역에서 픽셀 색상을 검색하고, 픽셀 또는 화면 영역에서 특정 픽셀이있을 때까지 기다릴 수있는 많은 기능이 있습니다. 컬러, 픽셀 컬러를 기다렸다가 기다리는 동안 다른 기능을 실행하십시오 (예 : 특정 컬러를 기다리는 동안 화면이 꺼지지 않도록 커서를 이동하십시오).

그러나 내가 말했듯이 마우스 클릭과 키보드 시뮬레이션, 스크린 영역의 스크린 샷 찍기 등과 같은 훨씬 더 많은 일을합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.