파이썬, 3.6 버전 기준에서그림을 그려보려 한다.

그림은 수직선이 왼쪽에서 오른쪽으로 반복 이동함.

 

1) 그림을 그리기 위한 matplotlib 라이브러리를 다운로드하자.

* 윈도우 커멘드 창에서 : pip install matplotlib

* 다운로드 후 확인해보면, matplotlib-3.0.2 버전을 받음


2) 코드 작성을 한다.

코드는 다음 사이트 에서 좀 수정한 내용입니다. :https://stackoverrun.com/ko/q/12087716

코드 변수명등이 매끄럽지 않네요. 추후 정리 필요할 듯...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.animation import FuncAnimation 
 
list_var_points = (0123456789101112131415)
 
 
fig, ax = plt.subplots() 
xfixdata, yfixdata = 715 
xdata = 0
ydata = 0
 
# line width
plt.rcParams['lines.linewidth'= 20
# plot의 여백 삭제, 박스를 전체 크기로
plt.subplots_adjust(left=0, bottom=0, right=1, top=1, wspace=0, hspace=0)
ln, = plt.plot('ro-', animated=True)
 
def init(): 
    ax.set_xlim(015
    ax.set_ylim(015
    return ln, 
 
def update(frame): 
    ydata = list_var_points[frame] 
# (시작선x, 끝선x), (시작선y, 끝선y)
    ln.set_data([ydata,ydata], [yfixdata,xdata])    
    return ln,   
 
# ani = FuncAnimation(fig, update, interval=100, frames=range(len(list_var_points)), 
#      init_func=init, blit=True)
ani = FuncAnimation(fig, update, frames=range(len(list_var_points)), 
      init_func=init, blit=True) 
 
plt.show() 
 
cs



< 아래의 파란 선이 왼쪽에서... 오른쪽으로 반복 이동 함>



기타 참고 자료 : 

https://financedata.github.io/posts/faq_matplotlib_default_chart_size.html

https://matplotlib.org/users/customizing.html


추후 애니메이션 효과가 더 필요하다면

game 라이브러리를 사용하는 것이 더 좋지 않을까 함

참고 : http://programarcadegames.com/index.php?chapter=bitmapped_graphics_and_sound 





 


Posted by 고무함지
,

C언어에서...

어떤 기능이 잘 동작하고 있는지 감시하기 위해서 저는 종종 

static 변수를 사용합니다.


그 예를 한번  설명 드립니다.

다음과 같은 코드가 있습니다.  0.2초마다, 온도를 보고, 높은 온도가 되면 냉각 Fan을 돌립니다.

만약... 디버깅을 위해 print를 넣는다면 0.2초마다 프린트문이 나오는데, 

이 너무 빨리 자주  발생되는 디버깅은 ... 시스템을 느리게할 수 있고, 

프린트들이 추가로 더 들어갈 경우... 내용을 보기 매우 어려워집니다.


void main( void )

{

    int temperature =  0;

    while( 1 )

    {

        temperature = GetTemperature();

        if( temperature > 60)  // 온도가 60도를 넘으면, 냉각 Fan을 100 속도로 돌린다.

            SetFanSpeed( 100 ); 

        else  // 60도 이하에선 Fan을 Off ( 0 속도) 로 한다.

            SetFanSpeed( 0 );

        

      delay( 0.2); // 0.2 초 기다리고 다시 동작...

      printf(" Temp:%d \n", temperature);

    }

}


그래서 저는 아래와 같이 static 변수를 사용해서 디버깅을 합니다.

그러면... 보고자 하는 프린트문이... 아주 많이 찍히지 않고,

간간히 찍힙니다. 아래 빨간 내용 참고하세요.

특히나 CPU리소스가 작은 Embedded system에서는 아래와 같이

프린트문이 너무 많이.. 빨리.. 찍히지 않도록 하는 것이 중요합니다.


void main( void )

{

    int temperature =  0;

    while( 1 )

    {

        temperature = GetTemperature();

        if( temperature > 60)  // 온도가 60도를 넘으면, 냉각 Fan을 100 속도로 돌린다.

            SetFanSpeed( 100 ); 

        else  // 60도 이하에선 Fan을 Off ( 0 속도) 로 한다.

            SetFanSpeed( 0 );

        

      delay( 0.2); // 0.2 초 기다리고 다시 동작...

     {

         static int count = 0;

         if( (count%50 ) == 0)   // 0.2 초 * 50 = 10초에 한번 온도값을 본다.

         printf(" Temp:%d \n", temperature);

    count ++; // count 증가

     }

    }

}





Posted by 고무함지
,

OpenCV-01 (시작하기)

공부 2017. 6. 5. 08:08

1) 환경 설정하기 

    아래의 opencv 에서 제공하는 튜토리얼 문서를 참고하여 구축합니다.

    대부분의 한국 블로그 가이드 문서는 이 내용과 유사합니다. (영어로된 글이 부담이 덜 하다면 이문서를 참고하세요)
    http://docs.opencv.org/2.4/opencv_tutorials.pdf


2) HW준비하기 

    저의 경우엔 웹캠을 하나 준비했지만, 그마저도 없다면, 가지고 있는 아무 사진 파일, 영상 파일등을 써도 무방합니다.


3) 공부 목적 
    영상 처리의 다양한 library 를 체험해보고, 앞으로 필요한 영상을 이용한 자동화 작업을 해보려고 합니다.

    - PC어플리케이션 :  IR송출기를 이용해서, 모니터의 Power를 켜고, 정상 영상이 나오는지 웹캠으로 감시... 잘 나오면 Power Off... 이를 반복함.

    - 스마트폰 어플리케이션 : 카메라는 상시로 동작하며, 움직임이나, 조명 변화등이 생기면, 0.5초 단위로 사진 촬영... 웹서버에 자동 전송



Posted by 고무함지
,

영상 기기의 video / audio 대비 딜레이 확인하는 방법


1) 사실... 전문 측정 기구가 없으므로, ...  동영상을 틀고, 눈으로 영상과 소리의 지연을 느껴보는 방법이 있다.

https://www.youtube.com/watch?v=s_PbyRpKrRk

https://www.youtube.com/watch?v=bCPEidaVzQU

https://www.youtube.com/watch?v=ucZl6vQ_8Uo

https://www.youtube.com/watch?v=EoeDZkGvvjg


2) 또는 전문 장비를 이용하기도 하나...

이 또한 전용 장비를 가진 전문 업체에서 가능합니다.


Posted by 고무함지
,

컴퓨터에 설치할 프로그램 리스트


윈도우 PC 

- virtual box : 리눅스 OS를 가상 머신으로 운영하기 위함

- Ubuntu linux OS 이미지 파일

- 네트워크 터미널 프로그램 : putty, MobaXterm(터미널창을 tab으로 여러개 사용 가능)

- RS-232 터미널 프로그램 : Embedded 보드 개발시엔 필요(라즈베리 같은 것), MovaXterm에서도 RS-232 터미널 지원함.


Ubuntu 가상 머신

- ctags : 코드의 함수 및 변수의 위치를 쉽게 인식 할 수 있는 인덱스를 만드는 유틸리티

          사용법 : http://bowbowbow.tistory.com/15#ctags-란 


HW target board

- 라즈베리파이

- 안드로이드 레퍼런스폰 (nexus 5 폰 같은)

- ARM Mali Ref Board : http://malideveloper.arm.com/news/mali-t604-low-cost-development-board/



공부 목표 


[v] 1. 리눅스 기본 명령어 - ls, ps, grep, find

[v] 2. 리눅스 유틸리티 명령어 - vi, gcc, make

[ ] 3. 리눅스 시스템 프로그래밍 : 이론 위주( 파일 시스템, 자료구조. ...)

[ ] 4. 리눅스 네트워크 프로그래밍 : 이론 위주

[ ] 5. 리눅스 실습 : 시스템 / 네트워크 : 라즈베리파이를 직접 제어 

[ ] 6. 리눅스 디바이스 드라이버 : 라즈베이파이로... GPIO 제어, 주변 장치제어(온도센서)

[ ] 7. 리눅스 어플리케이션 : 웹서버, 영상 처리, Qt

[ ] 8. 커널 소스, 안드로이드 코드가 공개된 안드로이드 레퍼런스 폰의 카메라 & Display 드라이버

   - Camera ISP (WB, Auto Focus, HDR)  /  Display Engine (Gamma, WB, gamut, Calibration)

[ ] 9. ARM의 GPU 관련 멀티미디어 처리(ARM Mali GPU)

[ ] 10. Color Science : 


참고 교재 : 


자료 구조

1. [책] C로 쓴 자료구조 / 오용철 / 이프레스 

2. [책] 열혈강의 자료구조 / 이상진 / 프리렉

2. [Youtube] mycodeschool : https://www.youtube.com/channel/UClEEsT7DkdVO_fkrBw0OTrA


리눅스

1. [책] 사물 인터넷을 위한 리눅스 프로그래밍 with 라즈베리파이 (임베디드 리눅스 입문서로도 추천)

2. [웹] 리눅스 커널 : https://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/index.html

3. [웹] 리눅스 디바이스 드라이버 : http://forum.falinux.com/zbxe/index.php?mid=device_driver&page=4&document_srl=406200


Color Science 

1. KhanAcademy : Color Science / Color Space : https://www.khanacademy.org/partner-content/pixar/color

2. 




주의 사항:

리눅스 디바이스 드라이버나... 커널 코드 분석은... 플렛폼에 따라 다르기 마련인데, 꼭 그 플렛폼에 맞는 해결책을 찾기 위해 시간 낭비하지 말자.

리눅스의 기본 구조와 원리에 집중하고, 플랫폼별 차이는 큰틀에서 볼때 그냥 tip정도로만 정리하자. 

되도록 코드를 읽고, 그림으로 그리면서, 추상화된 것을 도면(계층도, 순서도, 블럭도)으로 그려보자.


(수정: 2016-11-16: 공부목표(1, 2) 완료 처리)



Posted by 고무함지
,