0
첨부 파일에 int로 여러 점이있는 이미지가 있다고 가정합니다. 스크립트가이 점을 찾고 나에게 배열을 줄 수있는 방법이 있습니까?레이어에 포인트를 찾는 방법은 무엇입니까?
이미지 처리를 통해이 작업을 수행 할 수 있다고 생각하지만이 작업을 수행 할 스크립트가 있어야합니다.
첨부 파일에 int로 여러 점이있는 이미지가 있다고 가정합니다. 스크립트가이 점을 찾고 나에게 배열을 줄 수있는 방법이 있습니까?레이어에 포인트를 찾는 방법은 무엇입니까?
이미지 처리를 통해이 작업을 수행 할 수 있다고 생각하지만이 작업을 수행 할 스크립트가 있어야합니다.
나는 Script-Fu에서 이것을 수행하는 것이 좋습니다. Script-Fu로 픽셀을 반복하는 것은 모든 픽셀에 대해 배열과리스트를 할당하는 오버 헤드와 을 포함하기 때문에 매우 느립니다.
나는 빨리이 작업을 수행하는 스크립트를 작성했습니다,하지만 너무 느립니다 - 당신의 이미지를 내 컴퓨터에 5 분를 취합니다
; Returns an array of cons pairs
(define (count-points image)
(let* ((duplicate (car (gimp-image-duplicate image)))
(layer (car (gimp-image-flatten duplicate)))
(width (car (gimp-image-width duplicate)))
(heigth (car (gimp-image-height duplicate))))
(display (gimp-drawable-is-gray layer)) (newline)
(if (not (equal? (car (gimp-drawable-is-gray layer)) 1))
(gimp-image-convert-grayscale duplicate))
(plug-in-blur 0 duplicate layer)
(gimp-threshold layer 0 127)
(let loop ((x 0) (y 0) (result '()))
(if (>= y heigth)
result
(if (>= x width)
(loop 0 (+ y 1) result)
(loop (+ x 1)
y
(let ((vals (cadr (gimp-drawable-get-pixel layer x y))))
(if (< (aref vals 0) 127)
result
(cons (cons x y) result)))))))))
;; Call in Script-Fu Console like this (to calculate points
;; of the last image opened/created):
;;
;; (let ((imgs (gimp-image-list)))
;; (count-points (vector-ref (cadr imgs) 0)))
나는 이미지를 (을 흐리게 및 수출 제안 이전에 treschold를 사용하여) PGB/PBM과 같은 벙어리 형식으로 변환 한 다음 C 또는 다른 컴파일 가능한 언어로 외부 프로그램을 사용하여 계산을 수행합니다.