페이지

2015년 11월 12일 목요일

웹 크롤링

1. 기본적인 개발환경 패키지 설치 

$ sudo apt-get update 
$ sudo apt-get install build-essential 

2. Python 개발환경 

2-1. pip 패키지 매니저 설치 

$ sudo apt-get install python-pip 

2-2. Python 가상 환경 설치 

virtualenv virtualenvwrapper설치 

$ sudo pip install virtualenv virtualenvwrapper 

.bashrc 파일에 다음을 추가 

export WORKON_HOME=$HOME/.virtualenvs 
source /usr/local/bin/virtualenvwrapper.sh 

가상 환경 생성 

$ mkvirtualenv oneq 

(oneq)onecue@onecue-VirtualBox:~$  

가상 환경 주요 명령어  

가상 환경 생성 : mkvirtualenv env_name 
특정 python 버전으로 가상환경 생성 : mkvirtualenv --python=python3.4 env_name 
가상 환경 제거 : rmvirtualenv env_name 
가상 환경 실행 : workon  env_name 
가상 환경 종료 : deactivate 


3. Beautiful Soup 설치 

3-1. lxml 라이브러리 설치 

lxml defendency 설치 

$ sudo apt-get install libxml2-dev libxslt-dev python-dev zlib1g-dev 

$ sudo apt-get install python-lxml    # for Python 2.7 
$ sudo apt-get install python3-lxml  # for Python 3.x 

$ pip install lxml 


3-2. Beautiful Soup4 설치 

$ pip install beautifulsoup4 


4. Scrapy 설치 

4.1 Defendency 설치 

$ sudo apt-get install libffi-dev libssl-dev 

4.2 Scrapy 설치 

$ pip install Scrapy 


2015년 1월 6일 화요일

환경변수


  1. 환경변수 등록방법
    VARIABLE = value
  2. 개별 환경변수 확인
    echo $VARIABLE 
  3. 전체 환경변수 확인
    printenv
  4. 쉘에 환경변수 적용
    export VARIABLE 
  5. 환경변수 등록 & 적용
    export VARIABLE = value
  6. 환경변수 파일
    /etc/profile
    ~/.bash_profile
    ~/.bashrc
    ~/.profile
  7. PATH 추가하기
    PATH = $PATH:/usr/directory
    export
  8. 출처
    https://help.ubuntu.com/community/EnvironmentVariables
    https://kldp.org/node/69242
    http://ubuntu.or.kr/viewtopic.php?p=115063

Edison Arduino에서 갑자기 스케치가 업로드 안될때.

#mv the downloaded file to /sketch/sketch.elf
Moving downloaded file to /sketch/sketch.elf on target
target_download_name="${host_file_name##*/}"
echo "Moving downloaded file to /sketch/sketch.elf on target"
#$fixed_path/lsz.exe --escape -c "cp sketch /sketch/sketch.elf" <> $tty_port_id 1>&0
$fixed_path/lsz.exe --escape -c "mv $target_download_name /sketch/sketch.elf; chmod +x /sketch/sketch.elf" <> $tty_port_id 1>&0
Retry 0: Got TIMEOUT
Retry 0: Got ZCAN

Transfer incomplete



You're right Doug, after deleted all contents in from /var/log/journal directory the sketch was correctly uploaded.
Thanks a lot.


> rm -r *

출처 : https://communities.intel.com/thread/55976

2014년 4월 28일 월요일

버추얼박스 디스크 용량 변경 및 Ubuntu 파티션 크기 확장



1. 위도우에서 다음 명령을 이용하여 가상 디스크 파일의 크기를 변경

2. Ubuntu livecd를 통해 부팅
3. Gparted 실행
4. swap 확장 파티션을 확장
5. swap 확장 파티션의 위치를 우측으로 변경
6. root 파티션을 확장

2014년 1월 7일 화요일

Opencv with CUDA

설치전 필요사항
  1. OpenCV 최신버전 설치
    http://opencv.org/downloads.html
  2. CUDA 최신버전 설치
    https://developer.nvidia.com/cuda-downloads?sid=422836
  3. CMake 최신버전 설치
    http://www.cmake.org/cmake/resources/software.html
CMake GUI 툴을 이용하여 WITH_CUDA 플래그 활성화, 이때 다른 CUDA 설정이 바르게 로딩 되었는지 확인.

자신의 IDE에 맞는 프로젝트 생성 및 재 빌드.

프로젝트에서 환경설정.


참고자료

VC++ 디렉토리 사라짐

VC 2010 이후 버전에서 도구>>설정에 있던 VC++ 디렉토리 설정 부분이 사라지고 각 프로젝트 속성에 디렉토리 설정 항목이 옮겨 졌다.

하지만 이 항목들에 기본적으로 들어가 있는 경로는

C:\Users\onecue\AppData\Local\Microsoft\MSBuild\v4.0\에 있는 user 프로퍼티 파일을 상속 받도록 변경 되었다.

따라서 기존과 같은 방법으로 디렉토리를 관리하고자 하는 사람은 다음 경로의 파일을 노트패드를 이용하여 수정해야한다.

Windows CE 5.0 개발환경 구축

프로그램 설치
1. Embedded Visual C++ 4.0
http://download.microsoft.com/download/WindowsCENETPlatformBuilder/Install/4.0/NT5XP/EN-US/eVC4.exe

2. Embedded Visual C++ 4.0 SP4

3. Microsoft SDK for Windows Mobile 2003-based Pocket PCs

4. Developer Resources for Windows Mobile 2003 Second Edition

5. Pocket PC 2003 Emulator Image(한글)

6. Pocket PC 2003 SE Emulator Image(영문)

2013년 2월 27일 수요일

cout 출력을 파일로 저장하기

#include 
#include 
using namespace std;

int main ()
{
   cout << "This is sent to prompt" << endl;
   ofstream file;
   file.open ("test.txt");
   streambuf* sbuf = cout.rdbuf();
   cout.rdbuf(file.rdbuf());
   cout << "This is sent to file" << endl;
   cout.rdbuf(sbuf);
   cout << "This is also sent to prompt" << endl;
   return 0;
}

2013년 2월 21일 목요일

비주얼 스튜디오 2010 디렉터리 수정에서 상속된 값 변경하기

비주얼 스튜디오 2010에서는 디렉토리 설정이 각 프로젝트마다 관리하도록 변경되었습니다.

하지만 매번 포함/라이브러리/실행 디렉토리를 수정하기 힘드니까 상속된 값을 이용하여 자주 쓰는 경로는 상속해서 쓸수 있도록 되어있는데 이 값을 변경하는 부분이 없어서 구글링을 통하여 수정방법을 확인하였습니다. 비주얼 스튜디오 2010에서 바로 수정은 못하고 프로젝트 설정 파일을 통하여 수정하도록 되어있습니다.

$(USERPROFILE)\appdata\local\microsoft\msbuild\v4.0\

디렉토리 안에 보시면 32,64비트용 설정파일이 있고 열어보시면 다음과 같은 xml파일로 되어있으니 각 부분을 원하는데로 수정하시면 되겠습니다.

  
    $(ExecutablePath)
    C:\Program Files (x86)\Point Grey Research\PGR FlyCapture\include;D:\OpenCV-2.3.1\build\include;C:\Program Files (x86)\Point Grey Research\Triclops Stereo Vision SDK\include;$(IncludePath)
    $(ReferencePath)
    C:\Program Files (x86)\Point Grey Research\PGR FlyCapture\lib;D:\OpenCV-2.3.1\build\x86\vc9\lib;C:\Program Files (x86)\Point Grey Research\Triclops Stereo Vision SDK\lib;$(LibraryPath)
    $(SourcePath)
    $(ExcludePath)
  


2013년 2월 6일 수요일

Structure from Motion 소스코드 컴파일


mastering opencv with practical computer vision projects 책에 있는 Chapter 4. Exploring Structure from Motion Using OpenCV

Source 코드 컴파일 방법

https://github.com/MasteringOpenCV/code 에서 소스코드 다운로드


컴파일에 필요한 라이브러리
OpenCV v2.3 이상
PCL v1.6 이상
SSBA v3.0 이상 http://www.inf.ethz.ch/personal/chzach/opensource.html

OpenCV, PCL은 무리 없이 설치가 가능한데 SSBA 라이브러리를 컴파일 하는게 조금 번거롭다.


SSBA 소스파일을 다운 받아서
> cmake -G "Visual Studio 9 2008"

명령을 이용하여 프로젝트 파일을 생성할 수 있다. 하지만 이때 2가지 문제가 발생하게 된다.

1. isinf(), isnan() 두가지 함수를 찾을 수 없다는 에러.

그래서 boost 라이브러리를 설치하고 다음을 수정하면 해결
#include <boost/math/special_functions.hpp> //추가
 isinf() -> boost::math::isinf(); //수정

2. SuiteSparse에서 LDL, COLAMD 두가지 라이브러리가 필요하다는 에러.
http://www.cise.ufl.edu/research/sparse/SuiteSparse/
이곳에서 소스코드를 다운 받아서 필요한 2가지 라이브러리만 따로 프로젝트를 만들고 라이브러리를 생성해 주면 된다.

그러면 최종적으로 V3D.lib파일을 만들 수 있다.



Chapter 4. Exploring Structure from Motion Using OpenCV 디렉토리에서
> cmake -G "Visual Studio 9 2008"
실행하고 링크에서 opencv 라이브러리를 버전별로 수정해 주면 해결된다.

opencv_core243.lib opencv_imgproc243.lib opencv_ml243.lib opencv_highgui243.lib opencv_flann243.lib opencv_gpu243.lib opencv_calib3d243.lib opencv_features2d243.lib opencv_video243.lib

Cmmon.cpp에서
HANDLE 이 정의 되어 있지 않다는 에러가 난다면
#include <Windows.h> 을 추가

2013년 1월 16일 수요일

프로그램 실행 시간 측정하기

#include <mmsystem.h>
DWORD dwStartTime = timeGetTime();
DWORD dwEndTime = timeGetTime();
printf("%d ms\n", dwEndTime-dwStartTime);
참조 라이브러리에 winmm.lib를 추가

2013년 1월 2일 수요일

파노라마(Panorama)

OpenCV 2.4 버전에는 stitcher 라는 클래스가 있어서 너무나 쉽게 파노라마 영상을 만들 수 있다.

간단하게 vector<Mat>를 하나 만든 다음 영상을 추가하고 실행하기만 하면 파노라마 영상을 손쉽게 만들 수 있다.
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/stitching/stitcher.hpp"

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{

 vector<Mat> images;
 Mat panorama;
 
 images.push_back(imread("Picture 1.jpg", CV_LOAD_IMAGE_COLOR));
 images.push_back(imread("Picture 2.jpg", CV_LOAD_IMAGE_COLOR));
 images.push_back(imread("Picture 3.jpg", CV_LOAD_IMAGE_COLOR));
 images.push_back(imread("Picture 4.jpg", CV_LOAD_IMAGE_COLOR)); 

 Stitcher stitcher = Stitcher::createDefault();
 stitcher.stitch(images, panorama);
 imshow("panorama", panorama);
 waitKey(0); 
 
 return 0;
 
}

2012년 12월 23일 일요일

캐니 엣지(Canny Edge)

캐니 엣지는 영상처리에서 폭넓게 사용되는 특징 추출 방법중의 하나로, 영상에서 물체의 경계를 찾기 위한 알고리즘입니다.

장점
  1. 명확하게 하나의 선으로 엣지를 찾을 수 있다.
  2. 상, 하한 임계값 설정을 통하여 다양한 환경에 적용할 수 있다.

입력
  1. 입력 영상
  2. 소벨 커널의 크기
  3. 상/하한 임계값

절차
  1. 소벨 엣지(Sobel Edge)를 통하여 엣지의 방향과 크기를 구함.
  2. Non-Maximum Suppression
    엣지의 방향에서 가장 강한 엣지를 선택.
  3. Hysteresis Thresholding
    높은 임계값을 이용하여 엣지를 선택하고, 엣지라면 이후에는 낮은 임계값을 이용하여 계속해서 엣지를 탐색해 나감.
code
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main(){
 Mat src, src_gray;
 Mat detected_edges;

 int lowThreshold = 50;
 int ratio = 3;
 int kernel_size = 3;

 /// Read an image
 src = imread("lena.png");
 if( !src.data )
 { return -1; }
 

 /// Convert the image to grayscale
 cvtColor( src, src_gray, CV_BGR2GRAY );

 /// Reduce noise with a kernel 3x3
 blur( src_gray, detected_edges, Size(3,3) );

 /// Canny detector
 Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size ); 

 /// Show result
 imshow( "source", src );
 imshow( "canny edge", detected_edges );

 /// Wait until user exit program by pressing a key
 waitKey(0);

}


결과


링크

2012년 12월 18일 화요일

OpenCV 설치 완전 정복

OpenCV 설치에 어려움을 겪으시는 분들을 위하여 한번 정리해봤습니다.

1. 프로그램 다운받기
http://opencv.org/ 사이트 가셔서 자신의 운영체제에 맞는 파일을 다운 받으시면 됩니다. 저는 윈도우 버전을 다운 받겠습니다.

2. 설치 경로 지정
설치 경로는 자신이 원하는 곳으로 하시면 되겠습니다. 저는 C:\OpenCV-2.4.3으로 지정하였습니다. 그리고 Extract 버튼을 누르시면 되겠죠.



3. 설치된 경로에 가서 한번 확인해 보겠습니다.
doc - OpenCV에서 제공하는 레퍼런스 문서가 담겨있는 디렉토리
samples - 예제 소스들이 있는 디렉토리
build - 프로그램에서 사용될 라이브러리 파일들이 있는 디렉토리




여기까지 하시면 설치가 다 된겁니다. 참 쉽죠잉~
2.x 초기 버전에서는 cmake를 이용하여 전체 소스를 운영체제와 컴파일러에 맞춰서 빌드해야 하는 어려움이 있었는데 여기에서 절망하시는 분들이 많아서 그런지 요즘에는 빌드된 파일을 제공하고 있습니다.

4 비주얼 스튜디오 설정

이 부분 부터는 프로그래밍을 안해보신 분들은 조금 헷갈릴수도 있으니 주의를 기울여 주시길 부탁드립니다. 여기서는 비주얼 스튜디오 2008을 기본으로 하고 밑에 비주얼 스튜디오 2010 설명도 첨부하였습니다.

비주얼 스튜디오에는 크게 2가지 설정이 있습니다. 첫번째는 비주얼 스튜디오 프로그램 설정, 두번째는 우리가 생성한 프로젝트에 대한 설정으로 나눌 수 있습니다. 프로그램 설정은 한번만 하면 되는 것이고, 프로젝트 설정은 프로젝트를 생성 할 때 마다 해주셔야 합니다.

가. 새 프로젝트 생성


우선 여기서는 간단하게 설정과 설치 확인만 할 것이기 때문에 win32 콘솔 프로그램을 선택하겠습니다. 확인하시고 다음, 마침을 누르시면 프로젝트가 생성됩니다.

나. 프로그램 설정
상단 메뉴에 보시면 도구 > 옵션을 클릭하시면 됩니다.

1) 포함 파일 지정

주의1 : 밑에 두 디렉토리를 헷갈리시는 분들이 많으신데 밑의 경로를 지정해 주셔야 합니다.
X  C:\OpenCV-2.4.3\opencv\include
O  C:\OpenCV-2.4.3\opencv\build\include

주의2 : include 안에 보시면 opencv, opencv2 디렉토리 2개로 나누어져 있는데 이것은 opencv 1 버전과 2 버전의 헤더 파일이 다르기 때문에 분리 되어 있는 것입니다. 그런데 간혹 어떤 분들은 두 경로를 추가적으로 포함 파일에 추가하시는 분들이 있는데 이것은 잘못된 사용방법입니다.



2) 라이브러리 파일 지정

앞에서 설명 드렸던 build 디렉토리에 들어가 보겠습니다.
x86/x64 - 64비트 or 32비트 프로그램에 따라서 라이브러리 파일이 나누어져 있습니다. 잘 모르시면 거의 대부분이 x86에 있는 라이브러리를 사용하시면 됩니다.
그리고 x86 디렉토리에 들어가 보시면
vc9 - 비주얼 스튜디오 2008용
vc10 - 비주얼 스튜디오 2010용
라이브러리가 따로 있습니다.

그리고 다시 vc9 디렉토리에 들어가 시면
bin - 동적라이브러리 사용시 런타임 중에 참조할 dll 파일
lib - 동적라이브러리를 위한 lib 파일
staticlib - 정적라이브러리를 위한 lib 파일

이렇게 계층적으로 분리 되어 있습니다.

32비트 환경, 비주얼 스튜디오 2008을 사용하고 동적 라이브러리를 사용한다면 
C:\OpenCV-2.4.3\opencv\build\x86\vc9\lib 이 경로를 라이브러리 파일에 추가하시면 됩니다.



여기 까지가 프로그램 설정입니다.

다. 프로젝트 설정

프로젝트 > 설정 (HelloCV 설정)
을 선택하셔서 다음 메뉴로 들어가시면 추가 종속성 항목에 자신이 사용할 라이브러리들을 추가 하시면 됩니다.

라이브러리는 "이름 + 버전 + 모드.lib" 형식을 가지게 되는데 이때 모드는 Relaese 일때는 아무것도 없고 Debug 일때는 d 가 붙게 됩니다.


저는 다음과 같은 라이브러리를 추가하였습니다.

Release : opencv_core243.lib opencv_imgproc243.lib opencv_highgui243.lib
Debug : opencv_core243d.lib opencv_imgproc243d.lib opencv_highgui243d.lib


주의 : Debug 모드와 Release 모드를 확인하세요.

확인을 누르시면 됩니다.


참고 : 비주얼 스튜디오 2010 설정
vs2010에서는 프로젝트 설정과 프로그램 설정이 한곳에 모여 있습니다.

디렉토리 설정

프로젝트 > 속성 으로 가시면 됩니다.

포함 파일 디렉토리(앞과 동일) : C:\OpenCV-2.4.3\opencv\build\include
라이브러리 디렉토리 : C:\OpenCV-2.4.3\opencv\build\x86\vc10\lib


라이브러리 설정

추가 종속성 항목에 추가해 주세요

Release : opencv_core243.lib;opencv_imgproc243.lib;opencv_highgui243.lib;
Debug : opencv_core243d.lib;opencv_imgproc243d.lib;opencv_highgui243d.lib;




그리고 HelloCV.cpp 파일에 다음과 같은 소스 코드를 입력합니다.

간단하게 이미지 파일을 불러서 화면에 출력해주는 코드입니다.

주의 : 당연히 이미지 파일은 프로젝트 디렉토리에 있어야 겠죠?


#include "stdafx.h"
#include "opencv2/opencv.hpp"

using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{

 Mat image;
 image = imread("test.png");
 imshow("image",image);
 waitKey(0);
 return 0;
 
}


라. 컴파일, 빌드
그냥 F5번 눌러 주시면 두가지 과정이 한번에 이루어 집니다.

하지만 여기서 오류!!

분명히 소스코드에 에러는 없었기 때문에 컴파일과 빌드는 무사히 끝났지만 관련 dll 파일이 없다는 오류가 발생합니다.

이것은 저희가 동적라이브러리를 사용하기 때문에 exe파일이 실행 되는 동안 필요한 dll파일을 못찾아서 발생하는 문제입니다.




해결 방법 1. 관련 dll 파일을 프로젝트 경로에 복사해 준다.
해결 방법 2. PATH 환경 변수에 dll 파일이 있는 경로를 추가해 준다.

일반적으로는 2번 방법을 많이 사용합니다. 왜냐하면 편하니까요. ^^


5. 환경변수 설정

제어판 > 시스템 및 보안 > 시스템

편집을 누르시고

Path 에
vs 2008 : C:\OpenCV-2.4.3\opencv\build\x86\vc9\bin;
vs 2010 : C:\OpenCV-2.4.3\opencv\build\x86\vc10\bin;  를 추가해주시면 됩니다.


6. 확인

다시 한번 F5를 눌러서 실행하면 최종적으로 이미지를 출력해 볼 수 있습니다.