파이썬으로 이미지 처리 ~ 칠판의 사진을 찍어 문자 이외를 투과시킨 이미지를 만든다 ~

목표와 동기 부여



대학에서 강의 노트를 ipad의 노트 앱으로 취하는 나와 같은 사람이 결국 도착하는 것은 이런 노트입니다.


그래, 칠판의 사진을 찍어 노트에 붙이는 것입니다.
이 방법은 매우 편한 대신 불쾌한 노트가됩니다 ...
거기서 pythonista로 python 움직여 칠판에 쓰여진 문자만 남긴 투과 화상으로 해 주면 편하고, 게다가 거기 깨끗한 노트가 될 것…이라고 생각했기 때문에 해 보았습니다.

이미지 처리



sample.py
import photos
from PIL import Image
from PIL import ImageOps

이번에는 모든 처리를 pythonista에서 실시하고 싶었으므로 pythonista에서도 움직이는 위의 모듈 등을 import합니다.

sample.py
img=photos.capture_image()
mono=img.convert("L")
mono=ImageOps.invert(mono)

photos.capture_image()로 pythonista에서 카메라를 시작하고 칠판 사진을 찍습니다.
찍은 사진은 img에 PIL.Image 객체로 전달됩니다.

convert()를 사용하면 이미지 모드를 변경할 수 있습니다. 이번에는 그레이 스케일로 하고 싶었기 때문에 위와 같이 했습니다.

다음으로, 궁극적으로 칠판의 문자는 검은색으로 하고 싶기 때문에 네가포지 반전해 둡니다.
지금까지 다음과 같이 이미지가 처리되어 왔습니다.







그리고 여기에서 바이너리 값으로 0과 255의 2 값으로 떨어집니다.

sample.py
i =155
mono=mono.point(lambda x: 0 if x < i else x) 
mono=mono.point(lambda x: 255 if x >= i else x)


원래의 화질 탓으로 약간 부서져 있는 곳이 있습니다만 상당히 깨끗해졌네요.

그런데 여기에서 흰 부분을 비쳐 갑니다

Image.putalpha() 는 주는 인수에 의해 투과율을 설정할 수 있습니다.
0을 주면 100% 투과, 255를 주면 0% 투과(불투과)가 됩니다.
또, 인수에 투과시키고 싶은 화상과 같은 사이즈로 8bit 그레이 스케일의 Image 오브젝트를 지정할 수도 있습니다.이 경우도 투과율은 방금 전과 같습니다.

이제 이전 이미지의 흰색 부분을 100% 투과시키고 싶으므로 이를 네거티브 포지티브 반전한 이미지를 인수로 제공합니다.

sample.py
temp=mono.copy()
temp=ImageOps.invert(temp)
mono.putalpha(temp)
mono.show()

결국 이런 느낌이 들었습니다.

조금 이해하기 어렵지만 확실히 투명합니다.
노트에 붙여 봅시다.


좋은 느낌입니다. 이제 노트를 쓰는데 미친 듯이 이야기를 들을 수 없다!
무슨 일이 없어지네요! 결코 편하게 만들기 위해 만든 것은 아니기 때문에,,,!

또한 유지의 초절 유능 맨에 의해 2치에 떨어뜨릴 때의 기준치를 ui로 미세 조정해 다종 다양한 교수의 필압에 대응할 수 있게 된 완성품이 이쪽에 놓여 있습니다
htps : // 기주 b. 코 m / 케이 스케 168 / 아우토 _ 보아 ぢ g

보충



제 경우에는 iPhone의 pythonista에이 스크립트를 넣어 두고 바로 가기에서 움직였습니다.
import clipboard하고 마지막으로

hosoku.py
clipboard.set_image(mono)

이것을 붙여 두면 클립 보드에 복사까지 할 수 있으므로 나머지는 ipad에서 붙여 넣는 것뿐입니다

애플 제품 편리하다 아 아 아

좋은 웹페이지 즐겨찾기