목록PARK (165)
DY N DY
opencvsharp 3.1버전, visual studio 2015 사용. 연동 자체는 http://dyndy.tistory.com/261 여기에 포스팅. 포스팅과는 약간 다른 방법인데 쉽게 글로 설명하자면 WPF 프로젝트를 만든 후 솔루션 탐색기 -> 참조 오른쪽 클릭 -> Nuget 패키지 관리 -> 찾아보기 탭에서 OpenCvSharp3-AnyCPU 검색하여 해당하는 wrapper로 설치(여기에서는 opencv 3.1버전을 이용할 것이므로 해당하는 wrapper인 3.1 wrapper를 설치하였음) 하는 방법도 있다. 아무튼 연동이 끝났으면 우선 xaml로 가서 open file dialog를 열 버튼을 하나 드래그해서 만들어주고요즘은 파일을 드래그엔 드롭하여 여는것이 대세이므로..(?) 그것도 구..
개인적으로 WPF를 잠깐 써본적도 있고... 툴도 만들 계획이므로 opencv wrapper인 opencvsharp을 연동해 보았다. Visual Studio 2015 / opencvsharp 3.1기준 아마 2015버전의 VS를 사용한다면 nuget 패키지 매니저가 설치되어 있을 것이다.(아마 설치할때 디폴트 옵션을 사용했던가.. 추가로 설치한 적은 없으니 아마... 그럴 것..) opencvsharp github (https://github.com/shimat/opencvsharp)를 들어가 보면(2016.11월 기준) 3.1까지 지원을 한다. opencv최신버전을 모두 지원한다. nuget을 이용하여 설치를 누르면 설치하는 방법이 나오는데 아래와 같다. 한글 VS 기준으로 도구 -> NuGet 패키..
opencv를 이용하여 영상 부분 잘라내기 원하는 구간을 잘라낼 때 사용한다. opencv 3.1 기준. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include #include using namespace std;using namespace cv; #define input "input.avi"#define output "output.avi"#define startFrame 500#define endFrame 1000 int main(){ int iCurrentFrame = 0; VideoCapture vc = VideoCapture(input); if (!v..
이걸 사용할 일이 그다지 많지는 않을 것 같으나... 실험할 때 많이 사용할 수도 있을 것 같다. 개인적으로는 한가지 영상에 대해 여러가지 알고리즘을 이용해 테스트 한 결과영상 또는 중간영상을 뽑아냈을 때(동일한 영상이므로 전체프레임 수와 영상의 크기는 동일한 것으로 가정한다.)프레임별로 확인하고 싶은데 5개 알고리즘을 이용한다면 original영상까지 총 6개쯤 될텐데... 비디오플레이어를 6개 켜고 하기가 귀찮아서만들게 되었다.. 아마 opencv에서 지원하는 영상은 다 열릴것 같다. (주로 mpeg4 avi사용) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657..
영상에서의 객체인식, 분류 등등의 알고리즘을 연구하고 구현해보며 느낀건... 대단한 수학자나 연구자가 아니기 때문에... 알고리즘에 들어가는 파라미터값을 조금씩 바꾸며 최적의 값을 찾는다거나(물론 대단한 수학자라면 수학공식을 이용해 이론적인 최적해를 찾을 것이다. 부럽다..)또는 조금씩 수정해보며 다른 더 좋은 방법을 찾는 등의 일이 많다는 것이다. 구현을 해봤으면 이론은 이론이고 실제는 또 다르기 때문에 이런저런 변경된 사항 별로 실제로 눈으로 보거나 차영상 등을 이용해 실험결과를 확인해보고 뭐가 더 좋으니 마니 이런걸 기록해가며... 연구했던 것 같다. 물론 내가 멍청해서 그런것 같지만... 뭔가 진짜 머리가 좋은 분들은 수학공식으로 증명해가며 바로 딱 나오지 않을까..? 결국 이렇게 실험하다 보면...
코드리뷰를 할 때 참고할 만한 글이라 생각하여 기록.https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/코딩호러 하면 참 유명한 블로그인데 사실 잘 들어가보지는 않는다. 영어로 되어있어서... 그래도 워낙에 유명하기 때문에 가끔 접하게 된다. 여기서 많이 말하는게 Egoless 프로그래밍인데 대충 발번역을 해보자면... 자아가 없다..? (네이버에 검색해보니 객관화 프로그래밍이라고 한다)뜻은 별거없다. 그저 개발자 자신과 코드를 동일하게 보지 말 것. 결국 자신이 짠 코드를 자신과 동일시 하지 말라는 것이다. 이해가 잘 안가더라도 아래 Ten Commandments(십계명) 를 보면 이해가 쉽게 갈 것 같다. The Ten ..
opencv 3.1기준. dilate(팽창), erode(침식) 간단한 이론과 사용법 정리. 공부를 하다가 쓸일이 생겨 간단히 정리한다. Erode, Dilate 연산을 보통 모폴로지 기법이라고 한다. 위키에서 morphology에 대해 찾아보면...Mathematical morphology, a theoretical model based on lattice theory, used for digital image processing를 타고 들어가면 https://en.wikipedia.org/wiki/Mathematical_morphology에 자세히 설명이 되어있는데 영어인지라...대충... 기하학적인 구조의 분석과 처리를 위한 이론 및 기술이라고 한다. 영상내의 특정한 객체의 형태를 변형시킴으로써 작..
스칼라 공부를 간단한 것부터 시작. 스칼라는 함수형 언어이다... 지금까지는 C++, Java같은 객체지향 언어를 이용해 개발했기 때문에 스칼라를 공부하는 지금도 사실 함수형 패러다임에 어울리게 코드를 작성하는지는 모르겠지만 일단 언어에 익숙해지도록 이런저런 코드를 짜 봐야겠다.. 12345678910111213141516171819202122232425262728293031def calc (a:Double, b:Double, op:String):Double = { if(op == "+") a+b else if(op == "-") a-b else if(op == "%") a%b else if(op == "/") { if(b == 0.0) { println("cannot divide by 0") b } e..