bash (Matplotlib) + eog > 실시간 이미지 표시 처리

운영 환경
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)
ADDA v.1.3b6

전치


  • PyQt를 모른다
  • signal/slot/event/etc를 배우는 데 드는 비용은 지금 없습니다.
  • PyQt와 PySide는 라이선스적으로 어느 것을 선택할 것인가?
  • link: ht tp // 타쿠미키 m. bgs포 t. jp / 2014/11 / bg-po st. HTML

  • UDP로 데이터를 수신하고 이미지를 표시하고 싶습니다.

    학습 비용이 적고, 자신의 희망 기능을 구현하는 방법은 없는가.
    다음을 생각해 냈다.

    사용 기능



    화상 생성부



    Quaternion (또는 3 차원 가속도 (ax, ay, az))을 UDP로 수신하여 그래프 이미지로 출력합니다.
    ppm 형식 출력은 간단. 다른 형식도 파이썬 라이브러리를 사용하여 적절하게 구현한다.

    화상 표시부



    Ubuntu (또는 CentOS)에서는 eog라는 이미지 표시 프로그램을 사용할 수 있습니다.

    code



    화상 생성부



    우선 ImageMagick을 사용한 임시 코드는 다음과 같습니다.
    참고 : ImageMagick > 이미지 이동(+ 이미지 크기 확대) > convert green.png -page +0+20 -background none -extent 40x40 -flatten green_shift.png

    image.png라는 파일로 red, green, blue의 색이 5초 간격으로 전환된다는 것만의 구현.

    change_image_180214_exec
    #!/usr/bin/env bash
    
    for idx in $(seq 1 100)
    do
        for color in red green blue
            do
                echo $color
                convert -size 100x100 xc:$color image.png
                sleep 5
            done
    done
    

    이미지 표시



    다음을 수행한다.
    $eog image.png
    

    결과









    사용할 수 있을 것 같다.
    100msec 정도의 화상 변경도 문제 없을 것 같다.

    MemoryEnhancer용의 입력 UI인 ESP8266+MPU-9250 의 조정용의 소프트는 이것으로 할 수 있을까.

    이것은 「UI와 로직의 분리」의 1례일까.

    이미지 생성 > Matplotlib



    bash 대신 Matplotlib을 사용해보십시오.
    참고 : Jupyter / matplotlib > 2D 이미지 파일 저장 > plt.savefig("foo.png") / 그러나 plt.show()가 있으면 저장에 실패하는 모양

    saveToFile_180215.ipynb
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
    import time
    
    for loop in range(100):
        data_1d = np.random.rand(22500)
        print(data_1d)
        data_2d = np.reshape(data_1d, (150,150))
    
        plt.imshow(data_2d, extent=(0,150,0,150),cmap=cm.gist_rainbow)
        #plt.show()
    
        plt.savefig("foo.png")
    
        time.sleep(1)
    
    

    다음과 같은 이미지가 1 초마다 업데이트됩니다.



    Matplotlib의 plt.show()를 반복적으로 실행하면 이미지의 실시간 디스플레이가 아닌 이미지가 아래로 확장되어 추가됩니다 (아래 그림).
    matplotlib로 실시간 그리기 에 기재된 plt.pause(.01) 를 사용해도 아래에 연장되어 추가된다.
    이 근처 도 시도했지만 결과는 같습니다.

    이 문제도 있어, Matplotlib를 사용한 리얼타임 묘화 갱신은 포기하고 있었지만, 상기의 방법으로 리얼타임의 갱신을 할 수 있는 것을 알았다.



    링크



  • Jupyter notebook에 Matplotlib로 실시간으로 차트 작성

    이 방법은 Ubuntu 16.04 LTS 환경에서 작동 확인되었습니다

  • Resolved: Matplotlib figures not showing up or displaying
  • 좋은 웹페이지 즐겨찾기