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

목표와 동기 부여



대학에서 강의 노트를 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에서 붙여 넣는 것뿐입니다

애플 제품 편리하다 아 아 아

좋은 웹페이지 즐겨찾기