2015/12/22

Python 3.4 에 OpenCV 3.0 설치하기

Python 3.4 버전에 OpenCV 3.0 버전을 이용하기 위해 비공식으로 배포되고 있는 OpenCV Binary 패키지를 이용했다.

먼저 필요한 파일은 아래 경로에서 다운 받았다.
http://www.lfd.uci.edu/~gohlke/pythonlibs/

필요한 패키지는 OpenCV, Numpy, Scipy 이다.
http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
opencv_python-3.0.0-cp34-none-win32.whl

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
numpy-1.10.2+mkl-cp34-none-win32.whl

http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
scipy-0.16.1-cp34-none-win32.whl

아래 내용은 위 패키지를 설치한 내용이다.

X:\temp> pip install opencv_python-3.0.0-cp34-none-win32.whl
Unpacking x:\temp\opencv_python-3.0.0-cp34-none-win32.whl
Installing collected packages: opencv-python
Successfully installed opencv-python
Cleaning up...

X:\temp> pip install "numpy-1.10.2+mkl-cp34-none-win32.whl"
Unpacking x:\temp\numpy-1.10.2+mkl-cp34-none-win32.whl
Installing collected packages: numpy
Successfully installed numpy
Cleaning up...

X:\temp> pip install scipy-0.16.1-cp34-none-win32.whl
Unpacking x:\temp\scipy-0.16.1-cp34-none-win32.whl
Installing collected packages: scipy
Successfully installed scipy
Cleaning up...

설치를 마치고 테스트를 해 보았다.
OpenCV 웹사이트에서 샘플 코드를 가져와 테스트를 해 보았다.

import numpy as np
import cv2

img = np.zeros((512,512,3), np.uint8)

img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

img = cv2.circle(img,(447,63), 63, (0,0,255), -1)

img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255))

font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

아래 이미지는 위 코드를 실행하여 출력된 화면이다.

이제 간단한 이미지 처리 테스트는 Python 을 이용하면 편할 것 같다.

2015/12/03

SVN 서버에 log 없이 Commit 할 수 없도록 설정하기

Visual SVN을 사용하고 있는데 사용자들로 하여금 Commit 할 때 Log 메시지를 필수로 넣게하고자 방법을 찾아 보았다.
SVN 서버 설정에는 Commit 관련하여 hook 라는 여러가지 이벤트를 처리할 수 있는 방법이 있다.

Visual SVN 의 Repository 의 Property를 보면 Hooks 탭을 볼 수있는데 이 탭에서 여러가지 Event에 대한 설정을 할 수 있다.
Commit 관련하여 시작할 때와 파일을 올리고 Commit 하기 직전 그리고 Commit을 완료한 시점에 대한 hook를 설정할 수 있다.
start-commit
run before commit transaction begins, can be used to do special permission checking
pre-commit
run at the end of the transaction, but before commit. Often used to validate things such as a non zero length log message.
post-commit
runs after the transaction has been committed. Can be used for sending emails, or backing up repository.
- 출처 : Stack Overflow

pre-commit hook에 Windows 배치스크립트를 작성하여 검사할 수 있으며 이 스크립트가 0이 아닌 에러코드를 넘길 경우 Commit이 취소 된다.

아래 코드는 Stack Overflow에서 얻은 로그를 6자 이상 넣도록 하는 배치코드 이다.
setlocal enabledelayedexpansion

set REPOS=%1
set TXN=%2

set SVNLOOK="%VISUALSVN_SERVER%\bin\svnlook.exe"

SET M=

REM Concatenate all the lines in the commit message
FOR /F "usebackq delims==" %%g IN (`%SVNLOOK% log -t %TXN% %REPOS%`) DO SET M=!M!%%g

REM Make sure M is defined
SET M=0%M%

REM Here the 6 is the length we require
IF NOT "%M:~6,1%"=="" goto NORMAL_EXIT

:ERROR_TOO_SHORT
echo "Commit note must be at least 6 letters" >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1

REM All checks passed, so allow the commit.
:NORMAL_EXIT
exit 0

2015/10/26

블로그 이사

오래전부서 사용해 오던 티스토리(http://neodreamer-dev.tistory.com)을 떠나왔다.
오랜동안 고민을 하고 있었는데 다음이 카카오에 인수된 후 서비스를 하나 둘 접는 모습에 티스토리도 곧 사라질 수 있을 것 같은 두려움에 이사를 결정하였다.

공식적으로 두 블로그 사이에 데이터 이전을 지원하는 방법이 없다. 그래서 두 블로그의 글들을 XML로 백업하여 분석해 보았다. 구조가 많이 달라 완벽하게 이전은 어려웠다. 특히 Blogger에서는 첨부파일을 지원하지 않아 내용은 복사하고 첨부와 이미지는 티스토리의 링크를 유지 하기로 하고 글들을 이전 하였다.
요즘 틈틈히 공부하고 있는 python을 이용하여 Tistory 백업 파일을 분석하여 Blogger로 형식으로 전환을 하는 작업을 하였다. 글들은 모두 이전을 했는 글 형식까지 정확히 이전을 하지 못해 이전한 글들은 기록차원에서 보관하고 찾아 볼 때마다 조금씩 다듬기로 하였다.

2015/09/23

AutoIt3 Script 편집용 SciTE 사용자 설정하기

AutoIt3를 압축해제 하면 SciTE 폴더가 있고 이 폴더에는 au3.properties와 SciTE 실행 파일이 있다. 그리고 SciTE4AutoIt3 portable 버전을 압축해제하면 거기에도 SciTE 실행파일이 존재한다. AutoIt3와 함께 배포되는 실행파일이 최신 빌드인데 Portable에 최적화 되지 않은 것 같다. 사용자 설정파일인 SciTEUser.Properties 파일의 저장 위치가 서로 다르다.
AutoIt3와 함께 배포되는 SciTE는 시스템 환경설정에 따라 사용자 설정파일 위치가 달라진다. 하지만 SciTE4AutoIt3 portable 버전 포함된 SciTE는 실행파일고 동일한 위치에 사용자 설정 파일이 저장된다.

SciTE 설정은 기존 윈도우 프로그램과는 사믓 다른 구조이다. 대화상자에 사용가능한 옵션을 보여주지 않고 설정 파일에 직접 수정해야 한다. 게다가 설정 파일이 여러가지 존재한다. Global, Local, User, Directory 등이 있다. 이 중에서 User 설정을 변경하여 사용하면 된다. SciTE 메뉴에서 Options -> Open User Optioins File 을 실행하면 사용자 설정 파일이 열리는데 처음에는 아무 내용도 없다. 필요한 사항을 채워 넣어야 하는데 Open Global Options File을 열어서 필요한 내용을 복사하여 사용하면 된다.

먼저 자주 사용되는 몇 가지를 수정해 보았다.
참고로 환경 설정에도 블럭 개념이 있는데 이는 Python과 유사하게 들여쓰기로 구분한다.

우선 폰트 설정이다.
아래 내용은 윈도우에서 적용 될 설정 내용 이다. 얼마적 적용한 D2Coding 으로 바꾸어 놓았다.
if PLAT_WIN
    font.base=font:D2Coding,size:10,$(font.override)
    font.small=font:D2Coding,size:8,$(font.override)
    font.comment=font:D2Coding,size:9,$(font.override)
    font.code.comment.box=$(font.comment),$(font.override)
    font.code.comment.line=$(font.comment),$(font.override)
    font.code.comment.doc=$(font.comment),$(font.override)
    font.code.comment.nested=$(font.comment),$(font.override)
    font.text=font:D2Coding,size:11,$(font.override)
    font.text.comment=font:D2Coding,size:9,$(font.override)
    font.embedded.base=font:D2Coding,size:9,$(font.override)
    font.embedded.comment=font:D2Coding,size:8,$(font.override)
    font.vbs=font:D2Coding,size:10,$(font.override)
    font.monospace=font:D2Coding,size:11
    font.override=$(font.monospace)

위 내용을 붙여넣고 저장하면 바로 적용된다.

그리고 SciTE이 이전 작업 세션을 기억하고 있다가 프로그램을 시작할 때 세션을 복구 하는데 이도 옵션으로 조정할 수 있다.

save.session=0

으로 설정하면 항상 새롭게 SciTE가 실행 된다.

무수히 많은 옵션이 있는데 다른 옵션은 차차 익혀 나가야 겠다

Original Post : http://neodreamer-dev.tistory.com/763

2015/09/22

AutoIt3 개발 환경 만들기

이전 글을 통해 AutoIt3 를 설치(?)해 보았다.
2015/09/22 - [Dev Story] - Hello AutoIt3

AutoIt 과 SciTE4AutoIt3 를 설치하고 난 후 AutoIt3 경로의 SciTE 폴더의 SciTE.exe 를 실행하면 스크립트를 작성할 수 있고 단축키로 실행할 수 있다.



AutoIt 을 위해 최적화를 해 놓은 편집기 답게 많은 기능을 제공하고 있다.



SublimeText
메뉴바에서 Preference 메뉴의 Package Control을 선택하고 install package를 실행하고 AutoItScript package를 설치한다.





패키지를 설치하면 SublimeText 의  Build System에 AutoIt 이 등록이 된다.



다음으로 AutoIt3 의 경로를 설정해 주어야 한다. 설정을 하기 위해 아래 메뉴를 선택하여 AutoIt3 설정 파일을 연다.
Preferences > Package Settings > AutoIt > AutoIt Settings - Default
설정 항목은 4개인데 위쪽 3개 항목에 대한 경로를 설정하면 된다.
{
"AutoItExePath": "D:\\Dev\\AutoIt3\\AutoIt3.exe",
"AutoItCompilerPath": "D:\\Dev\\AutoIt3\\Aut2Exe\\Aut2exe.exe",
"TidyExePath": "D:\\Dev\\AutoIt3\\SciTE\\Tidy\\Tidy.exe",
"IncludeHelperAU3Path": "{PACKAGE_PATH}\\AutoItScript\\Include_Helper.au3"
}

이제 설정은 마쳤고 스크립트를 작성하고 실행하면 된다.
아래 화면은 예제 스크립트를 실행한 화면이다.



Notepad++
Notepad++은 추가로 설치해줄 것은 없다. 기본적으로 AutoIt 파일에 대한 Syntax Highlight를 지원해 준다.



단지 실행 시 AutoIt3 경로를 포함한 명령행을 작성해주면 된다.
F6 키로 Execute 대화상자를 호출하고 명령문을 입력한 뒤 Save... 를 선택하여 다른이름으로 저장하고 다음에는 해당 이름을 선택하여 실행하면 된다.



아래 화면은 Notepad++에서 .au3 파일을 실행한 화면이다.



Original Post : http://neodreamer-dev.tistory.com/762

Hello AutoIt3

AutoIt 을 알게 된 것은 꽤 오래전 이지만 쓸 기회가 많지 않아서 잊고 있다가 또 쓸 기회가 생겨 다시 살펴 보았다.
나중에 또 쓸 기회가 있을 수 있어 기록으로 내용을 간단한게 남긴다.


우선 AutoIt(https://www.autoitscript.com/site/autoit/) 은 베이직 스크립트와 유사한 문법으로 윈도우에서 실행되는 스크립트이며 작성된 스크립트를 실행파일로 변환도 가능하다.


AutoIt 는 별도의 스크립트 작성기나 인터렉트브 환경을 지원하지 않고 있으며 SciTE 편집기를 AutIt 환경에 맞게 설정한 것을 제공한다.


홈페이지를 방문하여 아래 두 파일만 다운로드하면 사용할 수 있다.

AutoIt-v3.zip

SciTE4AutoIt3_Portable.zip


AutoIt-v3.zip 파일만 받으면 기본적인 실행및 컴파일이 가능하며 제공하는 편집기를 사용하려면 SciTE4AutoIt3_Portable.zip 파일을 받으면 된다.
두 파일을 한 곳에 압축해제하고 SciTE는 AutoIt-v3를 압축해제한 후 해제한 폴더의 SciTE 폴더에 SciTE4AutoIt3_Portable.zip 파일을 압축 해제 해 놓고 AutoIt-v3를 압축 해제한 경로를 시스템 Path에 등록하면 기본 환경 설정이 된 것이다.


메모장이든 기본 편집기는 스크립트를 아래와 같이 작성하고 HelloAutoIt3.au3 로 저장한다.

#comments-start
The first AutoIt Script
#comments-end

#cs
Author: NeoDreamer
Write : 2015/09/22
#ce

ConsoleWrite("Hello AutoIt3") ; Write string to Console
ConsoleWrite(@Crlf)



아래 명령을 실행하면 위의 스크립트가 실행 된다.
AutoIt3 HelloAutoIt3.au3 | more


ConsoleWrite가 있는 경우 도스창에서 실행시 "| more" 옵션을 주어야 결과 화면이 보이는데 이유는 확인해 봐야겠다.


Original Post : http://neodreamer-dev.tistory.com/761

2015/09/15

프로그래머를 위한 한글 폰트 D2Coding

이전에도 한글 고정폭 폰트는 많았다. 하지만 프로그래머가 사용하기에는 부족한 점이 많았다. 유사한 문자들의 구분이 쉽게 되어야만 프로그램 작성시 오류를 줄일 수 있고 소스의 가독성도 올라간다.
그래서 대부분의 프로그래머는 고정폭 폰트 중에서 유사한 문자를 구분하기 쉽게 디자인한 폰트를 사용한다.
물론 프로그래머의 개성에따라 구분되어야 하는 문자는 다르다.
기존 고정폭 폰트중 한글을 포함한 프로그래머가 사용할 수 있는 폰트는 네이버에서 베포하는 나눔고딕코딩이 전부였다. 일부 한글 폰트와 영문 폰트를 조합하여 새로운 폰트를 만드는 경우가 있었는데 이는 매우 불안정해 보였다. 한글과 영문폰트의 폭이 맞지 않거나 인쇄가 되지 않는 문제가 있었다.


얼마전 Open Project 인 D2Coding 폰트가 공개되었다.
http://dev.naver.com/projects/d2coding/


아래 화면은 D2Coding 폰트와 나눔고딕코딩 폰트를 비교한 화면이다. D2Coding은 나눔바른고딕을 나눔고딕코딩은 나눔고딕을 기반으로 하고 있다. 두 폰트의 차이점은 여러가지가 있겠지만 그중 자간과 행간이 큰 차이점으로 보인다.
나눔고딕코딩은 오밀조밀한 구성으로 혼란스럽고 가독성이 많이 떨어지는 것 같았고 D2Coding은 그 보다는 편해 보였다. 물론 편집기마다 조금 다를 수 있다. 아래 화면은 Notepad++에서 갈무리를 한 화면이다.





그간 유일하다시피한 한글을 포함한 프로그래머 글꼴인 나눔고딕코딩을 사용하지 않은 이유가 오밀조밀한 구성으로 가독성이 많이 떨어지고 눈이 피곤해지는 것 같은 이유였는데 D2Coding에서는 많이 개선된것 같아 앞으로 사용하면서 장단점을 파악해 봐야 겠다.


한글을 포함한 고정폭 폰트의 장점이라하면 영숫자 사이에 한글을 포함하여도 폰트 폭의 변화가 없어 각 컬럼에 맞게 코딩을 할 수 있다는 것이다. 기존 영문 전용 폰트의 경우 한글을 포함하게되면 한글 폰트와 영문 폰트가 폭이 달라서 문장의 길이가 달라져 보기 싫었다. 게다가 시스템마다 영문폰트에 연결된 한글 폰트가 달라 다르게 표시 될 수도 있는 문제가 있다.
아래 이미지는 몇몇 영문 폰트를 갈무리한 것이다.










Fixed System을 제외하고는 한글 폰트를 포함하면 문장 길이가 컬럼수와 다르게 출력이 된다. 물론 코드에 2바이트 문자를 사용하지 않는 경우에는 이러한 현상이 문제가 되지 않는다.

하지만 주석이든 뭐든 한글이 사용하게 되면 컬럼이 맞지 않는 경우에는 좀 거슬리게 된다.


Original Post : http://neodreamer-dev.tistory.com/760

2015/09/14

Windows 10 네트워크 접속 암호 관리

Windows 10 에서 네트워크 접속 암호를 관리하는 방법이다.
아마도 Windows 8.x 버전에서도 동일 할 것으로 생각되지만 실제 테스트 해보지는 않았다.

우선 Windows 10의 시작메뉴에서 마우스 우측 버튼을 눌러 보여지는 메뉴에서 제어판을 호출 한다.


제어판 메뉴 중에서 User Account 를 선택 한다.



User Account 대화상자의 좌측 메뉴에서 Manage your credentials 을 선택하고 우측 내용 중에서 Windows Credentials 을 선택한다.



Windows Credentials 항목에 추가 또는 변경 작업을 하면 된다.








2015/09/07

PyCharm 에러: Fatal Python error: Py_Initialize: can't initialize sys standard streams

pycharm community 버전을 사용하고 있는데 pycharm community와 python을 모두 수동으로 설치(압축 해제)하여 사용하고 있다.
pycharm 에 python interpreter를 설정하고 아래와 같은 단순 테스트 코드를 수행하였는데 에러를 내 토해냈다.

Code
__author__ = 'NeoDreamer'
print(2 + 3)
Result
E:\Dev\python-3.4.3\python.exe E:/DevWork/Python/pycharm/test/test.py
Fatal Python error: Py_Initialize: can't initialize sys standard streams
LookupError: unknown encoding: x-windows-949
Process finished with exit code 3
Dos 명령창에서 아래 명령을 실행하면 문제 없이 실행이 되었다.

E:\Dev\python-3.4.3\python.exe E:/DevWork/Python/pycharm/test/test.py

해결하기 위해 인터넷에서 찾아보니 StackOverflow에 이에대한 해결책(http://goo.gl/xaGb0T)이 나와 있었다.
해결 방법은 편집기의 파일 설정과 프로젝트 설정의 인코딩 방식을 "UTF-8"로 설정하는 것이다.
설정 대화상자는 아래를 참고하여 볼 수 있다.
File > Settings... > Editor > File Encodings
IDE Encoding
Project Encoding
Default encoding for properties files


직접 확인한 결과 pycharm community 버전 4.5.4에서 Encoding 설정을 하는 항목이 3개 있었고 이를 UTF-8로 변경시 정상적으로 실행이 되었다.
E:\Dev\python-3.4.3\python.exe E:/DevWork/Python/pycharm/test/test.py
6
Process finished with exit code 0

위 방법은 현재 Project에만 해당하는 것이고 이후 생성되는 프로젝트의 기본 속성을 변경하고자 하는 경우 File 메유에서 Default Settings...에서 변경을 해 주면 된다.


Original Post : http://neodreamer-dev.tistory.com/758

2015/08/27

Chrome 한글 이름 파일명 다운로드 할 때 깨지는 문제

Chrome 의 언어 설정이 한글일 경우는 문제가 없어 보이는데 최근 Windows 10을 테스트 하면서 Chrome의 실행 문제로 Canary Build를 사용하는데 이 녀석은 설치시 영문으로 설치 된다. 사용중 한글 이름으로 된 파일을 다운로드 받을 경우 이름이 깨지는 것을 경험하고 이 문제의 해결 방법을 찾아 보니 인코딩 설정을 변경해 주면 해결 된다고 한다.


아래 설정 위치에서 인코딩을 유니코드로 설정해 주면 해결된다.
Settings -> Advanced Settings -> Web content -> Customize fonts... -> Encoding
(한글 UI: 설정 -> 고급 설정 -> 웹 콘텐츠 -> 글꼴 맞춤설정 -> 인코딩


Original Post : http://neodreamer-dev.tistory.com/757

2015/08/20

[Sublime Text 3] 다시 실행시 이전 문서 열지 않도록 설정하기

설정에 대한 일반적인 정보는 아래 링크의 이전 글을 참고 하면 된다.
2015/08/20 - [Com. Story/Tips] - [Sublime Text 3] 폰트 변경하기


Sublime Text를 다시 실행하면 이전에 열어두었던 문서가 다시 열린다. 상황에 따라 편리한 기능이기는 하나 내게는 필요 없는 기능이라 이를 해제하는 방법을 찾아 보았다.
아래 두 항목만 false로 설정을 하면 이전의 문서를 열지 않고 Sublime Text가 실행이 된다.
"remember_open_files": false,
"hot_exit": false
Original Post : http://neodreamer-dev.tistory.com/756

[Sublime Text 3] 폰트 변경하기

Sublime Text 는 기존의 일반적인 편집기에서 제공하는 환경 설정 대화상자를 제공하지 않고 JSON 형태의 설정 파일을 직접 편집해서 설정을 변경해야 한다.

Preferences의 System - Defaults 메뉴를 선택하면 아래와 같은 JSON 형해의 설정 파일을 편집창에서 볼 수 있다.


설정을 변경하기 위해 이 파일을 직접 변경할 필요는 없다. Preferences의 System - User 메뉴를 선택하면 아무 것도 없는 빈 설정 파일이 열리는데 이 파일에 추가로 필요한 사항을 작성하면 이 파일에 설정한 사항이 우선 적용 된다.

"font_face": "Monaco",
"font_size": 9,
설정은 저장하는 즉시 적용이 된다.


Original Post : http://neodreamer-dev.tistory.com/755

2015/08/15

[Sublime Text 3] 한글을 포함한 파일 읽기 문제

Sublime Text 3는 기본적으로 UTF-8 형식으로 파일을 읽어들인다 한다. 그래서인지 한글을 포함하는 문서를 읽어들이면 정상적으로 읽어들이지 못하고 아래처럼 깨져 보인다.


이를 해결하려면 읽어 들이고자하는 문서를 변환해서 불러 들여야 하는데 이러한 변환을 자동으로 해주는 확장 프로그램이 있다. 우선 Package Control 에서 Install Package 를 실행한다.



메뉴에서 Package Control이 보이지 않으면 Package Control이 설치되지 않은 것으로 아래 글을 참고하여 Package Control을 설치한다.
2015/08/15 - [Com. Story/Tips] - Sublime Text 3 에 Package Control 설치하기


install package 를 실행하여 "ConvertToUTF8" 를 찾아 설치한다.




설치를 하면 아래와 같이 "ConvertToUTF8" package에 대한 안내글이 보여진다.



이제 한글을 포함한 문서를 열어보면 정상적으로 보여지는 것을 확인할 수 있다.



그리고 상태 표시줄에 원래 파일의 인코딩을 확인할 수 있으며 이 파일을 저장할 때 원래 인코딩으로 변환하여 저장 된다.

Original Post : http://neodreamer-dev.tistory.com/754

[Sublime Text 3] Package Control 설치하기

Sublime Text 3 최신 개발자 버전을 설치하면 아래 메뉴 이미지처럼 Package Control이 설치되지 않는다.



인터넷 검색을 통해 알게된 Package Control 설치 방법은 두 가지 방법이 있다.

https://packagecontrol.io/installation

첫 번째 방법은 Console 입력창(Ctrl + `, View - Show Console)에 Python Code를 입력하는 방법이다.
import urllib.request,os,hashlib; h = 'eb2297e1a458f27d836c04bb0cbaf282' + 'd0e7a3098092775ccb37ca9d6b2e4b7d'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

Dependency 에러를 뿜기는 하지만 메뉴에 Package Control을 보여진다.



두 번째 방법은 아래 경로에서 Package Control.sublime-package 파일을 다운받아 Sublime Text 3가 설치되어 있는 경로의 package 폴더에 복사하고 재시작 하면 된다.

https://packagecontrol.io/Package Control.sublime-package


Original Post : http://neodreamer-dev.tistory.com/753

2015/07/30

Visual Studio 2015 Community 버전 ISO로 내려받기

Windows 10 공개에 맞추어 함께 공개된 개발툴 Visual Studio 2015.
2015 버전도 개인이 무료로 사용할 수 있는 버전인 Community Edition을 제공한다.
아래 페이지를 방문하면 Visual Studio Community 2015 를 내려받을 수 있다.
https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx


"Download Community Free" 버튼은 단순 실행 파일만 다운로드 하는 것으로 이 실행파일을 실행하면 설치에 필요한 파일들을 다시 인터넷으로 내려받아 설치하는 기능을 제공 한다. 실행 파일은 빠르게 다운로드 받을 수 있지만 설치는 필요한 파일을 계속 내려받아야 하기때문에 다소 느리다.


좀더 아래쪽에 보면 "Visual Studio downloads" 섹션에서 "Visual Studio 2015"를 선택하면 각각의 Edition을 선택할 수 있는데 기본적으로 Community Edition이 선택된다. 선택 후 우측에 보면 Language와 Format을 선택할 수 있는데 Format을 ISO로 선택을 하면 설치에 필요한 모든 것을 포함하는 ISO 파일을 다운 받을 수 있다.


그리고 오늘(2015/07/30)이후부터는 Windows 10 용 Application을 개발할 수 있는 패키지가 포함되어 있다

Original Post : http://neodreamer-dev.tistory.com/752

2015/07/17

Visual Studio 2012 단축키

Ctrl + Shift + B: Project Build
Ctrl + Alt + L: Solution Explorer 로 포커스 이동


Alt + 방향키(↑,↓): 커서를 함수 단위로 이동
Alt + Shift + 방향키(←,↑,↓,→): Column 단위 선택
Alt + Drag: 컬럼 단위 선택
Alt + F8: 선택 영역 들여쓰기 조정
Ctrl + }: 쌍을 이루는 중괄호로 커서 이동
Ctrl + Shift + }: 쌍을 이루는 줄괄호의 내용을 선택
Ctrl + Shift + S: 모든 파일 저장
Ctrl + K, C: 선택된 줄을 주석 처리 함
Ctrl + K, U: 주석 처리된 줄의 주석 해제
Ctrl + K, D: 코드 들여쓰기 정렬
Ctrl + Comman(,): Navigate To 대화상자 호출
Ctrl + U: 선택 영역 소문자로 바꿈
Ctrl + Shift + U: 선택 영역 대문자로 바꿈 
Ctrl + Delete: 현재 커서 위치에서 오른쪽에 있는 문자를 의미단어 단위로 삭제
Ctrl + Enter: 현재 커서가 있는 줄 위에 빈 줄 삽입
Ctrl + Shift + Enter: 현재 커서가 있는 줄 아래에 빈 줄 삽입
Ctrl + L: 현재 라인 잘라내기
Ctrl + Shift + L: 현재 라인 삭제
Shift + End: 현재 줄 커서 위치부터 줄 마지막까지 선택
Shift + Home: 현재 줄 커서 위치부터 줄 처음까지 선

Original Post : http://neodreamer-dev.tistory.com/751

2015/07/15

Windows 10의 Quick Access 목록 삭제하기

Windows 10을 사용하면 이전에 접근한 파일이나 폴더를 탐색기의 Quick Access 에서 쉽게 확인할 수 있다.
개인 PC라면 유용하겠지만 공공PC나 사무용 PC의 경우 여러가지로 문제가 될 수 있다.


이 목록을 쉽게 삭제하고 저장하지 않게 설정하는 방법이 있는데 이전에는 Taskbar의 Properties 에서 지원했지만 지금의 버전(10166)에서는 Quick Access의 Option 메뉴에서 지원 한다.




Options 대화상자에 보면 Privacy 항몸에서 삭제와 보이지 않도록 하는 설정이 있다.


Original Post : http://neodreamer-dev.tistory.com/750

2015/06/17

[HALCON] Win32 함수 충돌

HALCON 내부에서 함수 사용으로 아래 함수를 정의를 해제(Undef) 하였다.


#if defined(_WIN32)
#undef FindText
#undef CreateMutex
#undef CreateEvent
#undef DeleteFile
#endif


위 함수를 사용하고자 하는 경우 Ansi 인지 Unicode 인지 명시하여 사용하면 컴파일 에러를 피할 수 있다.
예) DeleteFileA, DeleteFileW


Original Post : http://neodreamer-dev.tistory.com/749

2015/06/05

OpenCV contrib 빌드하기

2015-06-04 일자로 OpenCV 3.0이 공개가 되었고 그 내용을 보다 관심을 끄는 기능 있었다.


Big thanks to Google who funded several successive GSoC programs and let OpenCV in. The results of many successful GSoC 2013 and 2014 projects have been integrated in opencv 3.0 and opencv_contrib (earlier results are also available in OpenCV 2.4.x). We can name:
  • text detection
  • many computational photography algorithms (HDR, inpainting, edge-aware filters, superpixels, …)
  • tracking and optical flow algorithms
  • new features, including line descriptors, KAZE/AKAZE
  • general use optimization (hill climbing, linear programming)
  • greatly improved Python support, including Python 3.0 support, many new tutorials & samples on how to use OpenCV with Python.
  • 2d shape matching module and 3d surface matching module
  • RGB-D module
  • VTK-based 3D visualization module
    etc.
opencv_contrib 중에서 2d/3d matching 이다. opencv_contrib 를 빌드 해 보기로 했다.
빌드를 위해서는 우선 opencv_contrib를 다운 받아야 하는데 아래 경로에서 3.0.0 버전을 다운 받았다.


https://github.com/Itseez/opencv_contrib/releases


위 경로에서 받은 파일을 OpenCV 3.0 경로에 풀어 놓고 CMake를 실행한다.
옵션 중에서 OPENCV_EXTRA_MODULES_PATH 항목에 위에서 압축을 풀어 놓은 곳의 modules 폴더를 지정한다.


Extra Module 경로를 지정하고 configure를 하면 추가된 모듈이 보이고 각각의 모듈에 대한 빌드 여부를 설정할 수 있다


OpenCV 2.9 버전부터인가 제공하던 world 버전도 보이는데 VTK와 함께 빌드에 문제가 있을 것으로 보여 이 모듈만 선택을 하지 않았다. 그리고 다시 configure 하니 정상적으로 구성 되었고 generate 를 선택하여 빌드에 필요한 솔루션을 생성하였다.

Visual Studio 2013 버전으로 생성된 OpenCV.sln 파일을 열고 빌드하였다. 그런데 뜻 밖의 에러에 마주쳤다.



OpenMP 의 for 루프에서 unsigned int를 지원하지 않는 문제였다. Visual Studio 2013 버전은 OpenMP 2.0 을 지원하고 있으며 OpenMP 2.0 버전은 unsigned int를 지원하지 않는다. unsigned int 는 OpenMP 3.0 버전에서 지원한다고 한다. 이것때문에 OpenMP를 포기할 수는 없어 해당 부분 두 곳만 OpenMP를 제거하였다.



두 곳의 OpenMP를 제거하고 빌드하니 아무런 문제 없이 빌드가 되었다.
빌드를 마쳤으니 테스트를 해 봐야겠다.

Original Post : http://neodreamer-dev.tistory.com/748

2015/06/04

OpenCV 3.0 Release

드디어 OpenCV 3.0 버전이 정식 릴리스 되었다.


OpenCV 3.0 Release


opencv_contrib 에 포함된 새로운 기능들을 어서 빨리 테스트 해 봐야겠다. 우선 VTK 모듈을 얹은 것 부터 빌드 해 봐야겠다

Original Post : http://neodreamer-dev.tistory.com/747

2015/05/27

OpenCV 드로잉 좌표 한계

OpenCV 2.9 버전을 64비트로 빌드하여 사용하는데 큰 이미지에 도형을 그리는 과정에서 이상한 현상을 보았다.


좌표값이 32768(32K)를 넘어가는 경우 도형이 그려지지 않는 문제가 있었다.


32768 값을 넘어가면 0으로 바뀌어 버려 이 지점을 포함하는 다각형을 그리는 경우 엉뚱한 도형이 그려졌다.


내부적인 좌표 한계인지는 좀 더 알아봐야 겠지만 문제의 처리가 우선이라 ROI를 지정하여 그리는 방법으로 우회를 하였다

Original Post : http://neodreamer-dev.tistory.com/746

2015/05/26

[MFC] VTK Hello World

천천히 VTK 를 공부하고 있다.


지난 번 라이브러리를 빌드 한 후 VTK C++ Tutorial을 하나하나씩 해보기로 하였다. 그 첫번째로 Hello World 이다.
Tutorial에서는 C++ 코드와 CMake를 이용한 빌드를 소개하고 있다. 이를 이전에 빌드한 vtkGUISupportMFC 를 이용하여 대화상자에 출력하도록 해 보았다.



m_pvtkMFCWindow = new vtkMFCWindow(this);
m_pvtkMFCWindow->GetRenderWindow()->AddRenderer(m_pvtkRenderer);
m_pvtkRenderer->SetBackground(0.0, 0.0, 0.5);


// This creates a polygonal cylinder model with eight circumferential facets.
//
m_pCylinder = vtkCylinderSource::New();
m_pCylinder->SetResolution(8);

// The mapper is responsible for pushing the geometry into the graphics
// library. It may also do color mapping, if scalars or other attributes
// are defined.
//
m_pCylinderMapper = vtkPolyDataMapper::New();
m_pCylinderMapper->SetInputConnection(m_pCylinder->GetOutputPort());

// The actor is a grouping mechanism: besides the geometry (mapper), it
// also has a property, transformation matrix, and/or texture map.
// Here we set its color and rotate it -22.5 degrees.
m_pCylinderActor = vtkActor::New();
m_pCylinderActor->SetMapper(m_pCylinderMapper);
m_pCylinderActor->GetProperty()->SetColor(1.0000, 0.3882, 0.2784);
m_pCylinderActor->RotateX(30.0);
m_pCylinderActor->RotateY(-45.0);

// Render on MFCWindow
// Add the actors to the renderer, set the background and size
//
m_pvtkRenderer->AddActor(m_pCylinderActor);
m_pvtkRenderer->SetBackground(0.1, 0.2, 0.4);

// We'll zoom in a little by accessing the camera and invoking a "Zoom"
// method on it.
m_pvtkRenderer->ResetCamera();
m_pvtkRenderer->GetActiveCamera()->Zoom(1.5);



Original Post : http://neodreamer-dev.tistory.com/745

2015/05/23

CListCtrl 에서 Check 상태 변화 확인 하기

CListCtrl에서 Check Box를 보이게 한 후 상태 변화를 확인하기 위해 LVN_ITEMCHANGED 의 메시지 핸들러의 파라메터를 확인해 보니 Item의 Uncheck와 check 가 각각 4096(0x1000) 과 8192(0x2000) 값으로 전달 되었다.


void CDlgTestDlg::OnLvnItemchangedList2(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

if(pNMLV->uChanged & LVIF_STATE)
{
if( (pNMLV->uOldState & 0x1000) && (pNMLV->uNewState & 0x2000) )
{
TRACE("Checked Item : %d\n", pNMLV->iItem);
}
else if( (pNMLV->uOldState & 0x2000) && (pNMLV->uNewState & 0x1000) )
{
TRACE("Unchecked Item : %d\n", pNMLV->iItem);
}
}

*pResult = 0;
}


Original Post : http://neodreamer-dev.tistory.com/744

2015/05/21

Windows Shell Commands

윈도우즈는 Windows + R 키를 눌러 나오는 명령창에서 입력을 하면 특정 경로의 바로 탐색이 가능한 Shell Commands를 제공 한다.


출처:http://www.eightforums.com/tutorials/6050-shell-commands-windows-8-a.html


붉은색 명령은 windows 8에서 추가된 명령 이다.










































































































































































































































































































































Shell CommandPath of Folder it Opens
shell:AccountPictures%AppData%\Microsoft\Windows\AccountPictures
shell:AddNewProgramsFolderControl Panel\All Control Panel Items\Get Programs
shell:Administrative ToolsC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
shell:AppDataC:\Users\(user-name)\AppData\Roaming
shell:AppsFolderApplications
shell:Application ShortcutsC:\Users\(user-name)\AppData\Local\Microsoft\Windows\Application Shortcuts
shell:AppUpdatesFolderInstalled Updates
shell:CacheC:\Users\(user-name)\AppData\Local\Microsoft\Windows\Temporary Internet Files
shell:Camera Roll (8.1 only)C:\Users\(user-name)\Pictures\Camera Roll
shell:CD BurningC:\Users\(user-name)\AppData\Local\Microsoft\Windows\Burn\Burn
shell:ChangeRemoveProgramsFolderControl Panel\All Control Panel Items\Programs and Features
shell:Common Administrative ToolsC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
shell:Common AppDataC:\ProgramData
shell:Common DesktopC:\Users\Public\Desktop
shell:Common DocumentsC:\Users\Public\Documents
shell:CommonDownloadsC:\Users\Public\Downloads
shell:CommonMusicC:\Users\Public\Music
shell:CommonPicturesC:\Users\Public\Pictures
shell:Common ProgramsC:\ProgramData\Microsoft\Windows\Start Menu\Programs
shell:CommonRingtonesC:\ProgramData\Microsoft\Windows\Ringtones
shell:Common Start MenuC:\ProgramData\Microsoft\Windows\Start Menu
shell:Common StartupC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
shell:Common TemplatesC:\ProgramData\Microsoft\Windows\Templates
shell:CommonVideoC:\Users\Public\Videos
shell:ConflictFolderControl Panel\All Control Panel Items\Sync Center\Conflicts
shell:ConnectionsFolderControl Panel\All Control Panel Items\Network Connections
shell:ContactsC:\Users\(user-name)\Contacts
shell:ControlPanelFolderControl Panel\All Control Panel Items
shell:CookiesC:\Users\(user-name)\AppData\Local\Microsoft\Windows\INetCookies
shell:Cookies\LowC:\Users\(user-name)\AppData\Local\Microsoft\Windows\INetCookies\Low
shell:CredentialManagerC:\Users\(user-name)\AppData\Roaming\Microsoft\Credentials
shell:CryptoKeysC:\Users\(user-name)\AppData\Roaming\Microsoft\Crypto
shell:desktopYour desktop folder
shell:device Metadata StoreC:\ProgramData\Microsoft\Windows\DeviceMetadataStore
shell:documentsLibraryLibraries\Documents
shell:downloadsC:\Users\(user-name)\Downloads
shell:dpapiKeysC:\Users\(user-name)\AppData\Roaming\Microsoft\Protect
shell:FavoritesC:\Users\(user-name)\Favorites
shell:FontsC:\Windows\Fonts
shell:GadgetsC:\Users\(user-name)\AppData\Local\Microsoft\Windows Sidebar\Gadgets
shell:GamesGames
shell:GameTasksC:\Users\(user-name)\AppData\Local\Microsoft\Windows\GameExplorer
shell:HistoryC:\Users\(user-name)\AppData\Local\Microsoft\Windows\History
shell:HomeGroupCurrentUserFolderHomegroup folder of current user
shell:HomeGroupFolderHomegroup
shell:ImplicitAppShortcutsC:\Users\(user-name)\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts
shell:InternetFolderInternet Explorer
shell:LibrariesLibraries
shell:LinksC:\Users\(user-name)\Links
shell:Local AppDataC:\Users\(user-name)\AppData\Local
shell:LocalAppDataLowC:\Users\(user-name)\AppData\LocalLow
shell:MusicLibraryLibraries\Music
shell:MyComputerFolderComputer (Windows 8) or This PC (Windows 8.1)
shell:My MusicC:\Users\(user-name)\Music
shell:My PicturesC:\Users\(user-name)\Pictures
shell:My VideoC:\Users\(user-name)\Videos
shell:NetHoodC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\Network Shortcuts
shell:NetworkPlacesFolderNetwork
shell:PersonalC:\Users\(user-name)\Documents
shell:PicturesLibraryLibraries\Pictures
shell:PrintersFolderAll Control Panel Items\Printers
shell:PrintHoodC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
shell:ProfileC:\Users\(user-name)
shell:ProgramFilesC:\Program Files
shell:ProgramFilesCommonC:\Program Files\Common Files
shell:ProgramFilesCommonX64C:\Program Files\Common Files (64-bit Windows only)
shell:ProgramFilesCommonX86C:\Program Files (x86)\Common Files (64-bit Windows only)
shell:ProgramFilesX86C:\Program Files (x86) (64-bit Windows only)
shell:ProgramFilesX64C:\Program Files (64-bit Windows only)
shell:ProgramsC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
shell:PublicC:\Public
shell:PublicAccountPicturesC:\Users\Public\AccountPictures
shell:PublicGameTasksC:\ProgramData\Microsoft\Windows\GameExplorer
shell:PublicLibrariesC:\Users\Public\Libraries
shell:Quick LaunchC:\Users\(user-name)\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
shell:RecentC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\Recent
shell:RecordedTVLibraryLibraries\Recorded TV
shell:RecycleBinFolderRecycle Bin
shell:ResourceDirC:\Windows\Resources
shell:RingtonesC:\ProgramData\Microsoft\Windows\Ringtones
shell:Roamed Tile ImagesC:\Users\(user-name)\AppData\Local\Microsoft\Windows\RoamedTileImages
shell:Roaming TilesC:\Users\(user-name)\AppData\Local\Microsoft\Windows\RoamingTiles
shell:SavedGamesC:\Users\(user-name)\Saved Games
shell:Screenshots (8.1 only)C:\Users\(user-name)\Pictures\Screenshots
shell:SearchesC:\Users\(user-name)\Searches
shell:SearchHomeFoldersearch-ms:
shell:SendToC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\SendTo
shell:SkyDrive (8.1 only)SkyDrive shell folder
shell:SkyDriveCameraRoll (8.1 only)C:\Users\(user-name)\SkyDrive\Pictures\Camera Roll
shell:SkyDriveDocuments (8.1 only)C:\Users\(user-name)\SkyDrive\Documents
shell:SkyDrivePictures (8.1 only)C:\Users\(user-name)\SkyDrive\Pictures
shell:Start MenuC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\Start Menu
shell:StartupC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
shell:SyncCenterFolderControl Panel\All Control Panel Items\Sync Center
shell:SyncResultsFolderControl Panel\All Control Panel Items\Sync Center\Sync Results
shell:SyncSetupFolderControl Panel\All Control Panel Items\Sync Center\Sync Setup
shell:SystemC:\Windows\System32
shell:SystemX86C:\Windows\SysWOW64
shell:SystemCertificatesC:\Users\(user-name)\AppData\Roaming\Microsoft\SystemCertificates
shell:TemplatesC:\Users\(user-name)\AppData\Roaming\Microsoft\Windows\Templates
shell:ThisPCDesktopFolder (8.1 only)Desktop
shell:User PinnedC:\Users\(user-name)\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned
shell:UserProfilesC:\Users
shell:UsersFilesFolderC:\Users\(user-name)
shell:UsersFilesFolder\DesktopC:\Users\(user-name)\Desktop
shell:UsersLibrariesFolderLibraries
shell:VideosLibraryLibraries\Videos
shell:WindowsC:\Windows


Original Post : http://neodreamer-dev.tistory.com/743

Windows 10 업데이트 후 vcomp110d.dll 못 찾는 문제

Windows 10 Preview 버전을 사용하고 있는데 10074 버전에서 10122로 업데이트를 한 후 Visual C++ 프로젝트를 실행하면 vcomp110d.dll 파일을 찾을 수 없다는 에러메시지를 뿜어 댔다.


재배포 패키지를 설치해 봐도 해결이 되지 않았다.
인터넷을 검색하여 "Vcomp110.dll이(가) 없습니다 / 찾을 수 없음 오류 메시지 해결 방법"의 몇가지를 따라해 봤지만 소용이 없었다. 


실제로 파일을 없는지 찾아 보던 중 Windows.old 폴더를 발견했다. 아마도 10074 버전에서 사용하던 파일들로 유추가 되었고 그 곳에는 vcomp110d.dll이 존재하였다. 그래서 두 파일(vcomp110.dll, vcomp110d.dll)을 windows\system32 폴더로 복사하였다.
C:\>copy c:\Windows.old\Windows\System32\vcomp110.dll c:\Windows\System32
        1 file(s) copied.


C:\>copy c:\Windows.old\Windows\System32\vcomp110d.dll c:\Windows\System32
        1 file(s) copied.


이후 문제가 해결 됨

Original Post : http://neodreamer-dev.tistory.com/742

2015/05/16

MFC Unicode project 에서 vtkMFCWindow 생성 문제

2015/03/31 - [Dev Story/Tips] - VTK 6.2 빌드하기


이전 글에서 설명한대로 생성한 라이브러리를 테스트 해 보았다.
예제 코드를 복사하여 실행해 보았는데 컴파일에는 문제가 없었는데 실행시 vtkMFCWindow 생성하는 부분에서 아래와 같은 에러가 발생하였다.



쉽게 해결 방법을 찾지 못하다 구글 검색을 통해 해결 방법을 알게 되었다. 비슷한 문제로 고생을 한 개발자가 있었다. 해결 방법은 프로젝트의 문자셋을 멀티바이트로 변경하면 문제가 없다는 것이였다. 하여 프로젝트의 문자셋을 유니코드에서 멀티바이트로 변경하니 실행에 문제가 없었다.


이제 유니코드가 대세임을 감안하면 다른 해결 책을 찾아야 했다. 그래서 VTK 라이브러리중 vtkGUISupportMFC 를 유니코드로 변경하여 라이버리를 만들어 사용하니 사용하는 프로젝트가 유니코드이어도 정상적으로 동작을 하였다

Original Post : http://neodreamer-dev.tistory.com/741

2015/05/07

Hello OpenCV Viz

이전 포스팅을 통해 생성했던 OpenCV 의 3D Visualization module 을 테스트 해 보았다.
2015/05/07 - [Dev Story/Tips] - OpenCV viz 빌드하기



필요한 것으로는 VTK 헤더파일과 VTK와 함께 빌드후 생성 된 lib 파일과 dll 파일 그리고 OpenCV 헤더파일이 필요하다. OpenCV 를 빌드할 때 INSTALL 프로젝트를 빌드했다면 install 경로에 모든 헤더파일이 있지만 그렇지 않다면 module\viz\include 폴더에 있는 viz 관련 헤더가 필요하다.


아직은 Viz에 대한 자세한 사항을 몰라 sample과 reference 문서를 보고 간단하게 테스트 코드를 만들어 보았다.
아래 코드는 테스트를 위해 사용된 코드이다.

// Header
// OpenCV
#include "opencv2/opencv.hpp"
#include "opencv2/viz.hpp"
#include "opencv2/viz/widget_accessor.hpp""

#include "vtkPoints.h"
#include "vtkTriangle.h"
#include "vtkCellArray.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkIdList.h"
#include "vtkActor.h"
#include "vtkProp.h"

#pragma comment(lib, "../OpenCV_VTK_VS2013/x86/lib/Release/opencv_core300.lib")
#pragma comment(lib, "../OpenCV_VTK_VS2013/x86/lib/Release/opencv_imgproc300.lib")
#pragma comment(lib, "../OpenCV_VTK_VS2013/x86/lib/Release/opencv_highgui300.lib")
#pragma comment(lib, "../OpenCV_VTK_VS2013/x86/lib/Release/opencv_viz300.lib")

// Source
/// Create a window
cv::viz::Viz3d vizHello("Hello Viz");

vizHello.setWindowSize(cv::Size(600, 480));

// Coordinate
vizHello.showWidget("Coordinate", cv::viz::WCoordinateSystem(1));

// Text 3D
cv::viz::WText3D wdg3DText("Hello OpenCV Viz Text3D"
, cv::Point3d(0.5, 0.5, 0.5), 0.2
, false, cv::viz::Color::green());
vizHello.showWidget("Text 3D", wdg3DText);

// Text 2D
cv::Size szWnd = vizHello.getWindowSize();
cv::viz::WText wdg2DText("Hello OpenCV Viz Text2D"
, cv::Point(szWnd.width / 4, szWnd.height / 4)
, 20, cv::viz::Color::yellow());
vizHello.showWidget("Text 2D", wdg2DText);
vizHello.spin();



아래 이미지는 위의 코드를 실행하면 보여지는 화면 이다.



프로그램이 정상적으로 실행되는 것으로 볼 때 OpenCV에 VTK 라이브러리를 포함 한 빌드에는 문제가 없어 보인다. 화면 출력은 3D는 자체 좌표계로 운영되고 마우스 컨트롤로 변경할 수 있으며 2D는 화면의 좌 하단을 원점으로 출력 된다.


Viz 운영에 있어 중요한 객체는 두 가진 인데 그려지는 윈도우를 담당하는 Viz3D 와 그려지는 내용을 담당하는 Widget 이다. Viz3D의 경우 Widget을 화면에 출력해 주는 역할을 한다

Original Post : http://neodreamer-dev.tistory.com/740

OpenCV viz 빌드하기



OpenCV 2.4.9 버전부터 지원한 3D visualization module 인 viz를 사용해보고자 빌드를 해 보았다.




빌드를하기 위해서는 VTK(Visual Tool Kit)이 필요하다. 3D visualization module 이 VTK를 기반으로 만들어졌기 때문이다.


우선 VTK site(http://www.vtk.org/)에서 소스를 받아 아래 설명에따라 빌드를 한다.
2015/03/31 - [Dev Story/Tips] - VTK 6.2 빌드하기


VTK 빌드를 마친 후 OpenCV를 빌드하여야 한다. 이 때 VTK 를 사용할 수 있도록 설정을 해 주어야 한다.

  • WITH_VTK 선택
  • VTK_DIR 항목에 위에서 빌드한 VTK 경로를 설정. 이 때 install 경로가 아닌 cmake설정에 쓰인 Where to build binaries 경로를 입력 한다.
  • BUILD_opencv_viz 항목 선택
  • BUILD_opencv_world 항목은 선택하지 않는다. (빌드시 에러가 발생하며 원인과 해결책은 찾지 못하였음)
그 외에 자세한 OpenCV 빌드 방법은 아래 글을 참고 하면 된다.
2010/04/07 - [Dev Story] - OpenCV 2.1 컴파일 하기
2010/10/17 - [Dev Story] - OpenCV 2.1 + TBB 를 Visual Studio 2010 에서 컴파일하기
2011/01/18 - [Dev Story/Tips] - OpenCV 2.2 + Intel TBB 를 VS2010 에서 컴파일하기(32/64비트 분리)



OpenCV 를 빌드할 때 INSTALL project를 빌드하면 viz 모듈에 포함되어 있는 소스파일이 install 경로의 include 폴더에 복사가 되지만 ALL_BUILD 만 빌드하면 수동으로 viz 모듈의 헤더파일을 복사해야 한다.


위 작업을 Visual Studio 2013 버전으로 OpenCV 3.0 RC1 과 VTK 6.2.0을 이용하여 진행하였으며 VTK는 Static으로 빌드하였다. 


이 과정에서 별다른 문제가 발생하지 않고 결과물이 생성 되었다. 일단 빌드는 성공하였고 이를 사용하는 것은 앞으로 조금씩 공부를 하며 진행할 예정이다.
Original Post : http://neodreamer-dev.tistory.com/739

2015/04/02

Visual Studio 2010 unable to start program, side-by-side

프로젝트를 2005 버전에서 생성을 하고 2010버전으로 업데이트를 한 후 2005버전이 없이는 실행이 되지 않는 문제가 발생하였다.


개발툴에서 실행을 시키면 아래이미지 처럼 Unable to start program 에러 메시지가 출력이 된다.



생성된 실행 파일로 실행을 하면 아래 이미지 처럼 side-by-side 에러가 발생을 한다.



Visual Studio 2010 버전에서 side-by-side 문제가 해결이 되었다고 알고 있었는데 이전 버전에서 만들어진 프로젝트는 계속 문제가 되나 보다.


일단 프로젝트의 옵션중에서 Linker의 Manifest file 에서 Manifest 생성을 하지 않도록 설정을 하니 프로그램 실행에는 문제가 없었다. 좀 찜찜하긴 하지만 일단 실행이 되니 당분간은 이대로 유지하고 짬이나면 manifest에 대해서 알아봐야겠다.


Original Post : http://neodreamer-dev.tistory.com/738

2015/03/31

VTK 6.2 빌드하기

얼마 전 공개된 VTK 6.2 버전을 빌드해 보았다.


VTK를 빌드하기 위해서는 kitware에서 제공하는 Cmake 툴이 필요하다.


Cmake 툴을 실행하고 Source Code 경로에 VTK 6.2 버전의 경로를 설정한다.
그리고 binaries 경로는 Visual Studio project가 생성될 경로이다. 적당한 경로를 설정하고 "Advanced" 옵션을 선택하여 모든 옵션을 볼 수 있도록 한다.


그리고 "Configure"버튼을 선택하여 Configuration을 진행한다.
처음 진행을 하면 경로가 없는 경우 경로을 생성한다는 메시지 박스가 출력이 된다.



그리고 프로젝트를 생성하기 위한 컴파일러 버전을 선택하는 대화상자가 나타난다.



컴파일러를 선택하고 Configuration을 진행하면 옵션 리스트가 갱신이 되고 모든 옵션이 붉은색 하이라이트로 표시 된다.

기본적으로 아래 언급된 옵션들에 대하여 사용 여부를 선택 한다.


"BUILD_SHARED_LIBS"
이 옵션은 라이브러리를 Dynamic으로 할 것인지 Static으로 할 것인지 설정하는 옵션으로 이 옵션을 선택하면 Dynamic DLL 이 생성하는 프로젝트가 만들어지고 그렇지 않은 경우 Static DLL을 생성하는 프로젝트가 만들어 진다.


"BUILD_EXAMPLES"
예제 프로젝트를 생성할지 여부를 선택하는 것으로 이를 선택하면 생성된 프로젝트의 빌드 시간이 길어진다. (선택하지 않는 것이 좋다.)


"BUILD_TESTING"
테스트 프로젝트 생성 여부로 BUILD_EXAMPLES 와 같이 프로젝트의 빌드 시간에 많은 영향을 준다.(선택하지 않는 것이 좋다.)



"CMAKE_INSTALL_PREFIX"
생성될 프로젝트 중 install project를 빌드할 경우 최종 결과물이 복사될 경로이다. 빌드하는 PC에서만 사용하는경우 기본값(Program FIles/VTK)으로 두어도 되지만 추후 다른 프로젝트에 쓰고 이동을 하는 경우에 활용하기 위해 별도의 경로를 지정하였다.



"Module_vtkGUISupportMFC"
MFC의 GUI를 지원하기 위해 이 옵션을 선택한다.


옵션 설정을 마치고 "Configuration"을 다시 진행을 하면 "BUILD_TESTING"옵션을 해제한 경우 "...vtkTesting..." 옵션 몇 가지가 붉은색으로 표시가 되는데 이는 다시 "Configuration"을 진행하면 사라진다.


에러(붉은색 하이라이트 옵션)이 없음을 확인하고 "Generate"를 선택하면 binaries 경로도 지정된 곳에 프로젝트가 생성이 된다.


프로젝트 파일 중 VTK.sln 파일을 열어서 ALL_BUILD를 Debug와 Release를 빌드하면 필요한 파일들이 생성이 된다. 추가로 install 프로젝트를 빌드하는 경우 "CMAKE_INSTALL_PREFIX" 경로에 bin, include, lib 폴더가 생성이 되고 관련 파일들이 이 곳으로 복사되어 진다.


참고로 Visual Studio 2013 버전 이상을 사용하는 경우 MBCS 라이브러리를 추가로 설치하고 프로젝트를 빌드해야 한다. Visual Studio 2013 버전부터는 MBCS 라이브러리가 배제된 상태로 제공이 된다. VTK 모든 프로젝트를 Unicode로 설정하여 빌드해 보았는데 무수히 많은 에러를 토해내어서 포기 하였다.


Multibyte MFC Library for Visual Studio 2013


이제 빌드를 마쳤고 하나씩 공부해 나갈 차례이다.
Original Post : http://neodreamer-dev.tistory.com/737

2015/03/25

Visual Studio 2012에서 Feature Pack의 변화

Visual Studio 2008 버전에서 추가된 Feature Pack을 2012 버전에서 테스트를 해보고자 샘플 프로젝트를 컴파일 해 보니 에러가 발생하였다. 관련 정보를 찾아보니 2012버전에서 Feature Pack이 수정(개선)이 되었다.


아래 내용은 변경사항 중 MFC와 ATL 라이브러리 관련 변경 사항이다.

MFC및 ATL 라이브러리 변경사항 보기



자세한 정보를 아래 링크를 확인 해보면 된다.
https://msdn.microsoft.com/en-us/library/vstudio/bb531344(v=vs.110)
Original Post :
http://neodreamer-dev.tistory.com/736