문제

이 질문서 교수,물리학입니다.

나는 초보자에서 프로그래밍 파이썬.나는 컴퓨터 전문가 나는 물리학입니다.내가 하려고 쓰는 코드에서는 파이썬은 대한 나의 자신의 연구를 포함하는 작은 이미지를 처리합니다.

해야 할 모든 것을 이미지를 표시하고 다음을 선택하는 지역의 관심을 사용하여 내 마우스와 마지막으로 작물을 밖으로 선택된 지역입니다.내가 이것을 할 수 있는 Matlab 를 사용하 ginput()함수입니다.

용 PIL.하지만 내가 찾는 난 후에 다음 명령을 실행하십시오 이미지입니다.show()이미지가 표시되지만 그는 프로그램을 정지가 않으면서 이미지 창을 엽니다.방법은 없을 구현하는 내가 무엇을 계획하고 있었다.가 필요로 다른 모든 모듈?알려 주시기 바랍니다.

도움이 되었습니까?

해결책

David는 아마도 Gimp 또는 다른 이미지 조작 프로그램을 사용해야한다는 데 동의하지만 여기에 스크립트가 있습니다 (독자에게 연습을하기 위해 가져 갔을 때). 피그 게임 그것은 당신이 원하는 것을합니다. PIGAME와 PIL을 설치해야합니다. 사용법은 다음과 같습니다.

scriptname.py <input_path> <output_path>

실제 스크립트 :

import pygame, sys
from PIL import Image
pygame.init()

def displayImage( screen, px, topleft):
    screen.blit(px, px.get_rect())
    if topleft:
        pygame.draw.rect( screen, (128,128,128), pygame.Rect(topleft[0], topleft[1], pygame.mouse.get_pos()[0] - topleft[0], pygame.mouse.get_pos()[1] - topleft[1]))
    pygame.display.flip()

def setup(path):
    px = pygame.image.load(path)
    screen = pygame.display.set_mode( px.get_rect()[2:] )
    screen.blit(px, px.get_rect())
    pygame.display.flip()
    return screen, px

def mainLoop(screen, px):
    topleft = None
    bottomright = None
    runProgram = True
    while runProgram:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                runProgram = False
            elif event.type == pygame.MOUSEBUTTONUP:
                if not topleft:
                    topleft = event.pos
                else:
                    bottomright = event.pos
                    runProgram = False
        displayImage(screen, px, topleft)
    return ( topleft + bottomright )


if __name__ == "__main__":
    screen, px = setup(sys.argv[1])
    left, upper, right, lower = mainLoop(screen, px)
    im = Image.open(sys.argv[1])
    im = im.crop(( left, upper, right, lower))
    im.save(sys.argv[2])

도움이 되었기를 바랍니다 :)

다른 팁

그 가치가있는 것 (다른 물리학 자에게서 나온)에 대해서는 이미지 처리 프로그램 에서이 작업을 수행 할 것입니다. 김프. Python (또는 모든 언어) 으로이 작업을 수행하는 주요 이점은 프로세스를 자동화하여 시간을 절약하는 것입니다. 그러나 교수님이 아닌 경우에는 어떻게 든 자르기의 이미지의 일부를 자동으로 파악할 수있는 알고리즘을 개발할 수 있습니다. 자동화로 저장할 시간이 많지 않은 것 같습니다.

내가 올바르게 기억한다면, 김프는 실제로 파이썬으로 스크립트가 가능하므로 시간을 절약하는 김프 스크립트를 작성하여 교수님의 친구가 원하는 것을 할 수 있습니다.

이미지입니다.show()호출이든 간단한 사진 뷰어를 찾을 수 있는 현재 플랫폼에서,한지 않을 수 있는 작물 및 저장 시설입니다.

에 있는 경우 윈도우자와 당신은 그것을 만들에서 작동하는 기계,설정'을 열고...'연결을 확인 그것은 그래서 실행하는 이미지 부로 편집기의 당신의 선택입니다.OS X 에서 및 기존 유닉스용하려고 해킹 _showxv()메서드의 맨 아래에서 Image.py 을 변경하는 명령을 사용합니다.

는 경우에 당신은 실제적으로 필요를 제공하는 휴대용 솔루션을 사용해야 합 UI 프레임워크를 지원하는 자니다.선택 졸 Tkinter (ImageTk.py 제공하는 래퍼 표시하기 위한 필 이미지에 Tk) PyQT4 (ImageQt 에 필 1.1.6 당신에게 래퍼를 표시하는 이미지에 QT4)또는 wxPython (더 높은 수준의 응용 프로그램 제작 툴킷을 사용하여 wxWidgets).그것은 매우 조금 작품의 전체 UI 키트,하지만 당신은 수있을 것을 완전히 사용자 정의하는 방법 응용 프로그램의 인터페이스 작동합니다.

파이썬에는 라이브러리와 같은 스크립트가 있습니까?자동으로 이미지를 자릅니다

당신이 찾고있는 것은 모듈입니다 : matplotlib, 그것은 matlab을 에뮬레이션합니다. ginput () 함수를 참조하십시오. 경계 상자를 찾을 수 있으면 PIL에서 작물을 사용할 수 있습니다.

http://matplotlib.sourceforge.net/api/figure_api.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top