반응형

어느 날, raspberry pi 3 b+가 하나 생긴다면...

무엇을 해볼까 고민하다가 tensorflow가 동작된다는 것을 알았고, 웹캠을 연결하면 사물인식을 할 수 있다는 것을 알았다...

거기다가 Movidius까지 사용이 가능하다... 이것은 나중에 실제 해보고 작성하도록 하겠다...

우선 아무것도 모르지만 검색을 통해서 자료를 찾고 라즈베리파이 보드를 사용해 본다...

 

-- OS 설치방법 --

OS설치방법은 너무 많아서 실제 해본 순서만 적어 본다...

 

1. OS 다운로드

아래 사이트에서 다음 항목을 다운로드를 받는다.

Raspbian Stretch with desktop

   https://www.raspberrypi.org/downloads/raspbian/

이름별로 차이가 있지만 일반적으로 사용하려면 with desktop 버전이 편하다. 위 이름의 OS를 설치한다. 

 

2. SD 카드 포맷(32GB SD카드 사용)

OS를 SD 카드에 설치해야 하는데, 먼저 SD 카드를 포맷한다...

포맷은 "SD Card Formatter" 프로그램을 사용한다. 

   https://www.sdcard.org/downloads/formatter/

위 사이트에서 자신의 환경에 맞는 프로그램을 다운로드한다...

포맷은 카드만 넣고 기본 설정으로 포맷한다...

 

3. OS 설치

여러가지 프로그램이 있는데... 뭘 사용해도 상관은 없어 보인다... 

3-1. Win32 Disk Imager 다운로드 및 설치

   https://sourceforge.net/projects/win32diskimager/

 

3-2. Etcher 다운로드 및 설치

Balena

   https://www.balena.io/etcher/

위 프로그램을 이용해서 다운로드 받은 라즈비안OS를 SD에 설치하면 된다... 

다운로드 받은 라즈비안OS를 선택하고 쓰거나 굽는 명령만 선택하면된다. 

설치하는 방법은 어려운 부분이 없이 일반적으로 프로그램 설치하는 방법과 큰 차이가 없다

3-2. rufus

위와 같은 이미지 굽기 프로그램인데 포터블 버전도 있어서 설치없이 사용 가능하다. 그래서 주로 사용하는 프로그램이다.

별다른 설정없이 굽기용 OS를 선택하고 시작만하면 된다.

 

4. 설정

사용하는 목적에 맞는 설정을 검색을 통해서 설정하거나 터미널창을 통해서 다운로드하면 되는데, 워낙 많아서 기본적인 것만 나열한다.

기본 업데이트이고 이외에는 사용하려는 목적에 맞게 다운로드해서 설치하면 된다. 아니면 설치시에 물어보는 업데이트에서 yes로 진행해도 된다.

sudo apt update
sudo apt upgrade

영상을 재생을 위해서는 "메뉴->Preferences->Raspberry Pi Configuration 선택"한다.(터미널에서는 $ sudo raspi-config 로 실행 가능)

Raspberry Pi Configuration 메뉴에서 Performance 탭 선택하여 GPU Memory 256 MB로 설정합니다.

 

* 한글 입력

웹접속 시 한글 사이트의 한글깨짐을 수정하는 것과 한글을 입력할 수 있는 방법이 있습니다.

한글 웹사이트 깨짐은 아래 명령어 입력후에 재부팅을 한다.

sudo apt-get install fonts-unfonts-core

한글 입력 방법은 아래 사이트 참조했습니다. 천천히 따라하면 되니 조급하게 생각하지 마세요.

- 설정에서 한글 선택 시, 저는 other.를 선택해야 한글을 선택하는 메뉴가 나왔습니다. 처음에는 바로 한글이 안나오는 건지도 모르겠네요. 

"generic 105-key PC (intl.) > Other > Korean > Korean - Korean (101/104 key compatible) > The default for the keyboard layout > No compose key 선택"

- 한영 선택의 경우는 한글과 영어를 변경하는 키를 설정한 후에 설정된 키를 이용해서 삼색문양으로 만든후에 한영전환키를 눌러야 한글과 영어가 변환이 됩니다.

https://1d1cblog.tistory.com/35

 

라즈베리파이 한글 입력하기

먼저 터미널에서 sudo apt-get install ibus ibus-hangul을 실행합니다. 설치가 완료되었다면 sudo raspi-config 명령어를 이용해 아래 화면으로 진입합니다. 위 화면에서 Localisation Options > Change keyboa..

1d1cblog.tistory.com

 

반응형

핸드폰으로 촬영한 영상 파일이나, 기타 영상 파일들이 내 컴퓨터에 일일이 폴더별로 잘(?) 정리가 되어 있을 때가 있습니다.  

그런데...

다시 한군데로 모아서 정리하려니, 일일이 폴더를 들어 갔다가 나와야 하는 불편함이 있네요...ㅡㅡ;a 

그래서 다른 능력자 분들의 코드를 모아서 조합을 해 봤습니다. 

아래 코드를 참조하시기 바랍니다.

import os
# 셸 유틸리티는 파일 및 디렉터리 작업을 수행하는 데 사용할 모듈의 이름
import shutil
# BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# 다운로드 받은 동영상 파일이 있는 최상위 폴더
inputdirpath = "D:\\movie"

# 한군데 폴더로 옮기고 싶은 위치
savedir = inputdirpath + '\\' + "mp4"
# 혹여나, 파일을 옮기고 싶지 않은 폴더가 있다면 정의
exceptfolder1 = 'D:\\movie\\mp4'
exceptfolder2 = 'D:\\movie\\keep'
exceptfolder3 = 'D:\\movie\\temp'

# 폴더가 없다면 만들어서 사용하기
def makedir(dirname):
    if not os.path.exists(dirname):
        os.makedirs(dirname)
        print('made sub-dir')

# 폴더를 계속 검색하면서 반복하게 된다.
def searchdir(dirname):
    try:
        # 전체 폴더 목록을 가져온다.
        filenames = os.listdir(dirname)

        # 폴더 목록에서 한개씩 폴더 경로를 가져온다.
        for filename in filenames:
            # 전체 경로를 가져온다.
            full_filename = os.path.join(dirname, filename)

            # if dirname == savedir and dirname == exceptfolder1 and dirname == exceptfolder2:
            #     continue

            # 폴더가 맞는지 확인
            if os.path.isdir(full_filename):
                # 폴더 안에 또 폴더가 있다면 다시 검색 함수 호출
                searchdir(full_filename)

                # 삭제 제외 목록이 아니면 폴더 삭제
                if full_filename != savedir and full_filename != exceptfolder1 and full_filename != exceptfolder2 and full_filename != exceptfolder3:
                    shutil.rmtree(full_filename)   # 폴더 삭제
                    print("Delete folder", full_filename)
            # else:
            # 폴더가 제외할 목록이 아니면 파일 이동 / 삭제 / 확인을 수행
            elif dirname != savedir and dirname != exceptfolder1 and dirname != exceptfolder2 and full_filename != exceptfolder3:
                # 파일 이름과 확장자를 분리해서 확인
                ext = os.path.splitext(full_filename)[-1]
                name = os.path.basename(full_filename)
                # print(full_filename)
                # 동영상용 파일 이라면...
                if ext == '.mp4' or ext == '.mkv' or ext == '.avi' or ext == '.wmv':
                    print('find >> ' + full_filename)
                    # 화질이 좋은 동영상을 분류하기 위해...
                    # 만일 파일 사이즈가 저용량 이라면 삭제 / 폴더도 삭제
                    if os.path.getsize(full_filename) < (1024*1024*300):
                        # 저용량 파일 삭제
                        if os.path.isfile(full_filename):
                            os.remove(full_filename)    # 파일 삭제
                            print("delete >>", full_filename)
                            # shutil.rmtree(dirname)   # 폴더 삭제
                            # print("Delete folder", dirname)
                    else:
                        # 파일 사이즈가 고용량이면 지정 폴더로 이동
                        shutil.move(full_filename, savedir + '\\' + name)
                        print('move << ' + savedir + '\\' + name)
                else:
                    os.remove(full_filename)
    except PermissionError:
        pass

# 프로그램 완료
def finish():
    print('complete')

# 순차적으로 프로그램 수행
if __name__ == "__main__":
    print('main program')
    makedir(savedir)
    searchdir(inputdirpath)
    finish()


# 참고 사이트
# http://flowerykeyboard.tistory.com/6
# https://code.i-harness.com/ko-kr/q/3c7f09
# 파이썬 조각 코드 모음집 : https://wikidocs.net/book/536

 

+ Recent posts