특징
플랫폼 호환성 문제 해결
스프링은 JavaEE가 제공하는 다수의 기능을 지원하고 있기 때문에 JavaEE대체
스프링은 IoC(제어의 역전) 지원
스프링은 DI(dependency Injection)패턴을 지원
스프링은 AOP(Aspect Oriented Programming)지원
스프링은 POJO(Plain Old Java Object)지원
트랜잭션 처리를 위한 일관된 방법을 제공
영속성과 관련된 다양한 API제공

JDBC/ORM, iBatis, Hibernate, JPA등과 같은 프레임워크와의 연동을 지원


스프링 프레임워크의 모듈 


(spring-beans)

스프링 컨테이너를 이용해서 객체를 생성

(spring-context)

객체 생성, 라이프 사이클 처리, 스키마 확장

(spring-aop)

AOP 기능

(spring-web)

REST 클라이언트, 데이터 변환처리, 서블릿 필터, 파일 업로드 지원 

(spring-webmvc)

스프링 기반의 MVC 프레임 워크 

(spring-oxm)

XML 처리

(spring-tx)

트랜잭션 처리

(spring-jdbc)

데이터베이스 연동

(spring-orm)

하이버네이트,JPA, MyBatis등과 의 연동 지원 

(spring-context-suport)

스케줄링, 메일전송, 캐시연동, 벨로시티 등 










스프링 -> Spring Framework 


JAVA 를 위한 Open Source 애플리케이션 FrameWork



POJO (Plain Old Java Object) 자바 빈즈 객체를 의미



스프링 의 강세?

-> 크기와 부하의 측면에서 경량

-> IOC (제어 역행) 이라는 기술을 통해 애플리케이션의 느슨한 결함을 도모

-> AOP(Aspect-Oriented Programming 관점 지향 프로그래밍)

***AOP

객체지향(OOP) : 유지 보수성과 확장성

AOP는 OOP 의 프로그래밍을 지향하면서 유지보수를 좀 더 편리하게 하기 위한 방법

"재사용" 보다는 변화가 쉬운 컴포넌트 구조 


장점 ( 중복 되는 코드 제거 Unit Testing 의 편의성 , 유지보수의 향상)


-> 애플리케이션 객체의 생명 주기와 설정을 포함하고 관린한다는 점에서 일종의 컨테이너(Container)라고 할수 있음

-> 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있음


!!! 스프링은 POJO방식의 프레임 워크 

!!! 스프링은 제어 반전(IOC: Inversion of Control)을 지원

컨트롤 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자 코드를 호출한다.

!!! 스프링은 의존성 주입(DI: Dependency Injection)을 지원

 각각 계층 혹은 서비스 의 의존성이 존재시 프레임 워크가 서로 연결 시켜준다.

!!! 스프링은 AOP 을 지원 (AOP: Aspect-Oriented Programming)을 지원


OpenCV 설치


홈페이지 주소 : http://SourceForge.net/projects/opencvlibrary


OpenCV Wiki


http://opencvlibrary.SourceForge.net


Linux = opencv~~~.tar.gz


Window =  OpenCV_~.exe


OverView 


OpenCV (Open Source Computer Vision Library)  & Computer vision 


Reference Site

- source forge(http://sourceforge.net/projects/opencvlibrary)


Patch Once or twice of year Site


http://sourceforge.net/cvs/?group_id=22870


http://SourceForge.net/projects/opencvlibrary


Download Site


http://opensource.org  ( Computer Vision Library)





Background knowledge


1. algebra


2. basic matrix operation


3. Gaussian distribution


4. Bayes' law


5. least-squares optimization


6. C language


7. C++ language


8. marchine learning



OpenCV be borned Intel



Rainer Lienhart


Jean-Yves Bouguet


Radek Grzeszczuk

Ara Nefian


// 대강 훑고 넘어가기 


1. IPP (Intel Integrated Performance Primitives) 라이브러리


OpenCV 는 최적화된 C언어로 되어있으며 멀티코어 프로세서의 장점을 활용할수 있다. 


추후 인텔(Intel) 아키텍처(architecture)에서 최적화하기 위해서는 다양한 알고리즘에 대한 저수준 최적화 루틴을 갖고있는


인텔 통합 성능 프리미티브 (IPP) 라이브러리를 구입하여 설치 할 수도 있다. IPP가 서치되어있다면 OpenCV 는 자동으로 IPP 라이브러리에서 적절한 함수를 찾아서 사용 한다. 



OpenCV 에서는 500개가 넘는 함수들로 구성되어있으며


불량검사,의료 영상, 보안, 사용자 인터페이스,카메라 보정, 스테레오 비전, 로봇 등 다양한 분야에서 사용할 수 있다.


컴퓨터 비전은 기계 학습과 함꼐 사용되는 경ㅇ가 많기 때문에 OpenCV 는 보편적 용도의 기계학습 라이브러리


(MLL : Machine Learning Library)를 포함하고 있다.



OpenCV는 많은 곳에서 사용 되어진다.


. 카메라 보정(camera calibration)


. 영상 이어붙이기(image stitching) 등등



OpenCV 는 오픈소스로 완전히 공개 되어있기 때문에 상업적인 프로그램을 만들 때 사용하여도 무방하다.



OpenCV 관련된 대규모 커뮤니티


http://groups.yahoo.com/group/OpenCV


네이버 OpenCV Korea


http://cafe.naver.com/opencv









'개발일지(Platform & Library) > OpenCv(2.x)' 카테고리의 다른 글

2. OpenCV  (0) 2016.09.22
기본 샘플  (0) 2016.08.08
opencv-3.1.0 - Visual Studio 2013 세팅하기  (0) 2016.08.08
OpenCV 버전별 사용하는 객체 상호 변환  (0) 2016.06.28

Shell 을 사용하다보면


흠 개발자들은 모르겠지만 /bin/sh 만 사용하는 나로써는


대부분 업무에 대한 잡다한 프로세스를 스크립트를 통해서 대체 하게 된다.


메모리가 튀는 순간을 확인하기 위해서 어느정도 때에 터지는지 실시간 확인을 한다거나 ( 물론 데몬으로 구현해도 상관은 없지만)  점점 하다보면 좀더 나은 방법을 찾겠지만 초창기에는 쉽고 간단한 방법으로 하게된다. 


for문을 쓰다가 요즘엔 foreach 를 자주 쓰는것처럼


int string 배열보단 vector<T>처럼 


아주 맨 처음에 정수 연산을 할때 아무생각 없이


cnt =0


while true

do 

.....

$cnt = $cnt + 1 

done

을 적지만 1에 대해 인식을 하지못하여서 제대로동작하지 않는 경우가 생긴다.




그렇기 때문에 간단하게 수정을 들어간다.



cnt =0

while true

do

cnt = $(($cnt+1))

echo $cnt

done





$(( $  value + 1)) 


다음엔 응용도 해보겠다.






어느날 웹 페이지를 편하게 사용하기 위해 만든 접속 페이지에서 css 다 망가지는 일이 발생 하였다.




웹페이지 사용은


OpenNewWindowEx(pAddress,

FALSE, // Menu

TRUE, // Toolbar

TRUE, // AddressBar

FALSE, // StatusBar

FALSE, // Resize

50, 0,

1200, 1200, hWnd);


로 구현했고


해당 OpenNewWindowEx에서는 


IWebBrowser2 *pWebBrowser;

HRESULT hr;


// 웹브라우저 객체를 생성한다.

hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,

IID_IWebBrowser2, (void**)&pWebBrowser);



로 띄워서 사용했고 사용 에는 문제가 없었다. 그런데 오늘 부터 css가 다 망가져서 보여지기 시작했다.


해당 디버깅? 이라기보단 vs에서 직접 열어보니 쿼크 모드가 적용되지 않았다고 한다.


해당 쿼크모드에 대해서 좀 조사하고 해결해야겠다.




자주자주 써봐야 하는데


Python 


C++ 


을 쓰다보니 헷갈리는 부분이 있다.


C++에서야


while(true)

{

sleep(1000);

std::cout<<"check"<<std::endl;

}



Python // 파이썬 의 경우는 인덴트가 중요하기 때문에 인덴트에 유의해서 작성한다.


while 1:

print("check")



우찌우찌 해야되지 하다가 검색도 안해보고 그냥 어림짐작으로 막 쓰다보니 되었던 while


#!/bin/sh


while true

do

ls -al

sleep 1

done



//  ; 가 너무 습관화 되어있다 보니 붙여야 하는지 마는지 너무 헷갈린다....


while: 도있고 while() 도있고 while 도있고


Unix에서는


while 조건문

do

할일

done


의 형식으로 적어 주면 된다.






#include <opencv2/core/core.hpp>  

#include <opencv2/highgui/highgui.hpp>  

#include <iostream>  



using namespace cv;

using namespace std;


int main(int argc, char** argv)

{


Mat image;

image = imread(이미지파일, IMREAD_COLOR);   // Read the file  


if (!image.data)                              // Check for invalid input  

{

cout << "Could not open or find the image" << std::endl;

return -1;

}


namedWindow("Display window", WINDOW_AUTOSIZE);// Create a window for display.  

imshow("Display window", image);                   // Show our image inside it.  


waitKey(0);                                          // Wait for a keystroke in the window  

return 0;

}

잡다한 업무 때문인지 OpenCV 를 하겠다고 한게 2.x버전이였는데 3.x버전이 되어버려서 3.1.0버전으로 세팅하게 되었다.


일단 우선 3줄 요약 식으로 해야 할일이 있다.


1. OpenCV 다운로드 하여 설치 


2. 환경변수 설정 


3. Visual Studio 설정 


3가지만 하게 되면 원하는 헤더 들을 include 하여서 사용하면 된다.


1. OpenCV 를 다운로드 한다. 


https://sourceforge.net/projects/opencvlibrary/  지금은 현 사이트에서 다운로드 받았다.


해당 아이콘이 보일텐데 해당 아이콘을 더블클릭하여 열어 준다.




OpenCV 라이브러리 들을 풀어서 놓을 곳을 지정하는데 되도록이면 C:\ 혹은 D:\이 편한거 같다. 세팅은 매번 하는게 기억도 안사라지고 도움도 되기 때문에 C:\에다가 한다.





설치가 완료되게 되면 C:\ 드라이브안에 opencv라는 폴더가 생김을 확인할수가 있다. 여기까지가 진행되면 1의 Opencv설치는 끝이 난다. 



2. 환경변수를 설정한다.

이제 설치를 완료 했기 때문에 환경 변수를 설정해주어서 해당 라이브러리 등을 사용할수가 있게 되는데 꼭 해 주어야 하는 부분이다.


우선 내컴퓨터 오른쪽 -> 속성 에 들어가면 고급 시스템 설정이라는 화면이 보인다. 누르도록 한다.


해당 창이 나오게 되면 환경변수라는 버튼이 보일것이다. 살포시 누른다.



시스템 변수 에 보면 Path  라는 것이 잇는데 편집 (I)... 을 누르게 되면 시스템 변수 편집 창이 나타나게 된다. 이 창의 변수 값의 맨 마지막에 ; 을 추가 해준후에


opencv에 위치였던  C:\opencv\build\x64\vc12\bin; 을 추가해준다.


여기까지 진행되면 2번도 완료 !


3. Visual Studio 설정한다.


이제 기본적인 베이스를 다 완료 됐다고 할수 있다. 여기에서 이제 IDE를 설정해주고 컴파일을 하기 위한 라이브러리들을 가져온다.



우선 include 파일에 대 한 경로를 지정해 주어야 하는데 프로젝트 속성 에 들어간후에


C/C++ 일반 -> 추가 포함 디렉터리 에 include 파일의 위치인 C:\opencv\build\include; 을 입력 해준다. 


링커 -> 일반 -> 추가 라이브러리 디렉터리 C:\opencv\build\x64\vc12\lib 를 입력한다.





이번엔 링커 -> 입력  추가 공속성 탭을 누르면 화살표 버튼이 나오는데 해당 버튼에서 추가 종속성에


opencv_wordl310.lib 를 입력한다. 


현재 Debug모드에서 했기 때문에 Release모드에서 바꾸고 똑같이 해주어야 한다. 








'개발일지(Platform & Library) > OpenCv(2.x)' 카테고리의 다른 글

2. OpenCV  (0) 2016.09.22
1. OpenCV OverView  (0) 2016.09.22
기본 샘플  (0) 2016.08.08
OpenCV 버전별 사용하는 객체 상호 변환  (0) 2016.06.28

+ Recent posts