[ev3dev] ptyhon으로 LCD(화면)를 포착하는 프로그램 만들기
개시하다
이 글은 EV3에 ev3 dev를 설치해 SSH 연결이 가능한 상태라는 전제를 달았다.환경을 구축하지 못한 분들은 여기 기사를 참고하세요.
Linux로 Mindstorm-EV3 제어하세요!ev3 dev OS 설치와 SSH 연결
만든 물건
mindstorm-EV3의 스마트 블록 화면(LCD)을 포착하여 이미지로 저장하는 프로그램을 만든다.Python의 ev3 devAPIev3dev-lang-python를 사용합니다.
ev3 dev-lang-python의 환경 구축에 대해 참고하세요.
파이톤으로 EV3의 모터와 센서를 제어해 보세요.
절차.
screenshot.py
#!/usr/bin/env python3
import sys
from subprocess import call
# 画像データを扱うためのライブラリ
from PIL import Image
# 保存する画像名、デフォルトでは"screenshot.png"
out_name = sys.argv[1] if len(sys.argv) > 1 else "screenshot.png"
# フレームバッファーをキャプチャし、PNG イメージに変換する
call(["fbgrab", out_name]);
# スクリーンショットした画像を読み込む
image = Image.open(out_name)
# RGB形式に画像を変換
image = image.convert("RGB")
# 画像を整形
image = image.resize(tuple(i * 2 for i in image.size), Image.NEAREST)
pixel_data = image.load()
# 画像の色変換
for y in range(image.size[1]):
for x in range(image.size[0]):
if pixel_data[x, y] == (255, 255, 255):
pixel_data[x, y] = (173, 181, 120)
# Save the image again
image.save(out_name);
call(["fbgrab", out_name])
에서 얻은 캡처 이미지는 흑백 이미지이기 때문에 진정한 화면 색을 표현하기 위해서는 흰색 픽셀을 연두색으로 변환해야 한다.그 처리를 실현하는 것은 프로그램의 다음 부분이다.
for y in range(image.size[1]):
for x in range(image.size[0]):
if pixel_data[x, y] == (255, 255, 255):
pixel_data[x, y] = (173, 181, 120)
실행
첫 번째 인자에서 저장할 이미지 파일을 지정할 수 있습니다.
robot@ev3dev:$ python screenshot.py test.png
이런 그림을 얻었어요.Reference
이 문제에 관하여([ev3dev] ptyhon으로 LCD(화면)를 포착하는 프로그램 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/munro/items/8f301c57d3e5741ea8f7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)