반응형

[python]기본 Shell 활용

파이썬의 IDE와 Shell

 파이썬으로 본격적으로 개발을 한다면은 사실 파이참(PyCharm) 같은 IDE(통합개발환경) 툴을 사용 하는 것이 좋다. 다른 IDE처럼 문법 검사 등 개발 시간을 단축시켜주는 많은 보조 기능들이 제공이 되기 때문이다. 과거에는 명필은 붓을 탓하지 않는 다는 말이 있다.


 그러나 오늘날은 도구의 성능의 영향이 확실히 크다. 그러나 초보자 혹은 상황이 여의치 않을 경우에는 파이썬을 설치할때 기본적으로 제공되는 IDE도 상당한 도움이 된다. 특히, Shell은 간단하게 테스트 할때 많은 도움이 된다.


Python Shell의 활용

 기본적으로 Windows PowerShell 이나 CMD 그리고 유닉스 계열의 bash shell 에서 파이썬을 설치한 다음에 python(혹은 python3)만 입력할 경우 보이는 >>>이 보이는 화면이 파이썬 Shell이다. 여기에서는 한 줄씩 JS(자바스크립트)처럼 코드 입력후 실행을 해볼 수 있다. 반면 GUI에 제공되는 Shell의 경우 같이 설치된 IDLE를 실행하면 파이썬에서 제공하는 Shell을 확인할 수 있다.


 이러한 기능은 모듈을 테스트하거나 간단한 코드의 결과를 확인할 때 유용하다. 이러한 기능은 개발을 단축시키는데에 도움이 된다. 특히 GUI에 제공되는 Shell의 경우 전용 단축키와 기능들이 제공이 되기 때문에 운영체제에서 제공되는 Shell에서 실행하는 것보다 더 편리한 편이다.


주요 단축키

 주요 단축키의 경우 Options -> Configure IDLE 를 선택하여 나온 화면의 Key 탭에서 변경이 가능하다. 많은 단축키들이 있고 이를 자신의 입맛대로 수정을 할 수 있다. (그러나 정해진 표준이 없다면, 가능하면 수정을 하지 않는 것을 권장한다) 그리고 기본적으로 자주 사용하는 단축키를 적어 놓는다.


윈도우 기준

Shell 재시작 : Ctrl + F6

이전 줄 코드 읽어 오기(이전으로) : Alt + p

이전 줄 코드 읽어 오기(최근으로) : Alt + n

되돌리기 : Ctrl + Shift + z

자동완성 : tab


 그 외 기본적으로 동일하게 사용되는 기능은 오려두기, 복사, 붙여넣기, 문장 맨앞으로, 문장 맨뒤로는 굳이 외우지 않아도 잘 알기 때문에 생략을 한다.

반응형
반응형

라즈비안 : OpenCV를 쉘 스크립트로 설치

배경

 라즈비안에 OpenCV 설치 하는 방법에 대해서는 사실 많은 블로그에서 정리가 되어 있다. 하지만, 그 과정을 따라서 하는 것도 나쁘지는 않지만, 기본적으로 쉘에서 처리가 가능한 것들은 그냥 쉘 스크립트로 만들면 되지 않을까 하는 생각에서 작성하게 되었다.


 이번글은 작성중인 OpenCV 쉘 스크립트를 저장한 정도의 글이 될 것이다. 이후 추후에 쉘 스크립트 문법에 대해서 정리를 해 놓아야 될 것 같다.



OpenCV 설치 확인 및 제거 방법

 라즈비안이 우분투 커널을 사용하므로 마찬가지로 우분투에서 사용했었을 때 실행이 잘 되었다. 다만, 미리 설치가 되어 있을 경우 제거를 해줘야 한다.


pkg-config --modversion opencv
# 제거할 경우
cd {기본opecv 소스폴더의 build 폴더}
make uninstall


제거를 위와 같이 하지 않으면, apt-get purge로 삭제를 해도 pkg-config으로 검사할때 검출이 된다. 아마도 해당 정보를 지우지 못하는 버그가 있는 것 같다.



OpenCV 설치 쉘 스크립트(contirb포함)

 버전 수준으로 따지자면, 0.1 스크립트라고 봐야 할 것이다. 즉, 아직 부족하다고 생각 든다.

 OpenCV3.2.1외에 다른 버전이 필요한 사람이라면, OPENCV_VERSION의 숫자값을 변경하면 된다. 이미 다른 OpenCV가 설치가 되어 있다면, 설치가 진행되지 않는다. 또한, 일반적인 개발 환경으로 셋팅을 한 것이 기 때문에 실제로 배포를 하려고 할 경우는 필요한것만 빌드하도록 수정해야 한다.


#!/bin/bash

# Custom values
OPENCV_VERSION="3.3.1"
OPENCV_REPO=https://github.com/opencv/opencv/archive/"$OPENCV_VERSION".zip
OPENCVCONTRIB_REPO=https://github.com/opencv/opencv_contrib/archive/"$OPENCV_VERSION".zip

# check exit opencv modules
pkg-config --modversion opencv
if [ "$?" -eq 0 ]; then
  echo "You already install opencv"
  exit 0
fi

# Update Debian
sudo apt-get update && sudo apt-get upgrade -y
if [ "$?" -eq 1 ]; then
  echo "Faile Update or Upgrade"
fi

# Install need modules
DEPPKGS=(build-essential cmake)
DEPPKGS+=(pkg-config)
DEPPKGS+=(libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev)
DEPPKGS+=(libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev)
DEPPKGS+=(libv4l-dev v4l-utils)
DEPPKGS+=(libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev)
# Qt4
DEPPKGS+=(libqt4-dev)
DEPPKGS+=(mesa-utils libgl1-mesa-dri libqt4-opengl-dev)
# Optimature lib
DEPPKGS+=(libatlas-base-dev gfortran libeigen3-dev)
DEPPKGS+=(python2.7-dev python3-dev python-numpy python3-numpy)

echo "=== Install depend packages ==="
for DEPPKGNAME in ${DEPPKGS[@]}; do
  dpkg -l | grep "$DEPPKGNAME"
  if [ "$?" -eq 1 ]; then
    sudo apt-get install -y "$DEPPKGNAME"
  fi
done
echo "=== End install depend packages ==="

PWD=`pwd`
WORKSPACE="$PWD"/opencv
if [ ! -d "$WORKSPACE" ]; then
  mkdir "$WORKSPACE"
  cd "$WORKSPACE"
fi

OPENCVZIP="$WORKSPACE"/opencv.zip
if [ ! -f "$OPENCVZIP" ]; then
  wget -O "$OPENCVZIP" "$OPENCV_REPO" \
  && unzip -o "$OPENCVZIP" 
  if [ "$?" -eq 1 ]; then
    echo "fail download '$OPENCVZIP'"
    exit 1
  fi
else
  upzip -o "$OPENCVZIP"
  if [ "$?" -eq 1 ]; then
    echo "fail unzip '$OPENCVZIP'"
    exit 1
  fi
fi

CONTRIBZIP="$WORKSPACE"/opencv_contrib.zip
if [ ! -f "$CONTRIBZIP" ]; then
  wget -O "$CONTRIBZIP" "$OPENCVCONTRIB_REPO" \
  && unzip -o "$CONTRIBZIP"
  if [ "$?" -eq 1 ]; then
    echo "fail download opencv_contrib.zip"
    exit 1
  fi
else
  unzip -o "$CONTRIBZIP"
  if [ "$?" -eq 1 ]; then
    echo "fail unzip '$CONTRIBZIP'"
    exit 1
  fi
fi

# OPENCVDIR="$WORKSPACE"/opencv-3.4.0
OPENCVDIR="$WORKSPACE"/opencv-"$OPENCV_VERSION"
if [ -d "$OPENCVDIR" ]; then
  cd "$OPENCVDIR"
else
  echo "does not have dir '$OPENCVDIR'"
  exit 1
fi

BUILDDIR="$OPENCVDIR"/build
if [ ! -d "$BUILDDIR" ]; then
  mkdir "$BUILDDIR" && cd "$BUILDDIR"
else
  cd "$BUILDDIR"
fi


cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D ENABLE_NEON=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-"$OPENCV_VERSION"/modules \
-D WITH_V4L=ON  \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
../

if [ "$?" -eq 1 ]; then
  echo "fail OpenCV cmake build '$PWD'"
  exit 1
fi

time make
if [ "$?" -eq 1 ]; then
  echo "fail OpenCV make"
  exit 1
fi

# only in raspberry
sudo make install
if [ "$?" -eq 1 ]; then
  echo "fail OpenCV install"
  exit 1
fi

echo "complete OpenCV install"
exit 0




후기

 라즈베리 파이3의 경우 듀얼코어(make 옵션의 -j2)까지는 에러가 발생하지 않지만, 마지막부분에서 문제가 있는지, 싱글코어로 빌드한것과 시간차이가 거의 없었다. 코어를 3개를 올릴 경우 빌드 막바지에서 메모리가 부족해서 빌드가 중단되는 문제가 있다.


 일부 후기에서 정정한다. swap 가상 메모리의 크기를 늘리면, 모든 코어를 빌드에 투입하여 시간을 단축 시킬 수 있다. 방법은 추후에 기회가 되면 정리 하도록 하겠다.


참조 자료

블로그 OpenCV3.4 설치




반응형

+ Recent posts