요즘 블러효과로 꾸며진 어플리케이션이 자주 나온다. 스크롤을 내렸을때, 정해진 지점까지 블러효과를 낼 수있는 방법에 대해 알아보자. 블러효과는 16버전 이후에 나온 기능이다.public static Bitmap blur(Context ct, Bitmap sentBitmap, int radius) { if (VERSION.SDK_INT > 16) { Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); final RenderScript rs = RenderScript.create(ct); final Allocation input = Allocation.createFromBitmap(rs, sentBitmap, Allocation.MipmapCont..
메모리를 생각하면서 코딩하는 습관은 중요한 것같다. android를 코딩할 때 메모리를 고려한 방법을 제시해보겠다. 1. boolean타입의 변수를 많이 사용하게 될 경우에는 1bit만으로 표현이 가능한 값(true/ false)를 8bit나 주고 정의할 필요는 없어보인다. 이런경우 BitSet클래스를 활용해보는 것도 좋은 방법일 수 있다. 2. 작은 타입 변수를 사용하되, 타입변환이 없는 것이 좋다. 3. 캐쉬를 사용하면, 엄청나게 빨라짐과 동시에 메모리 효율에도 효과적이다. 4. 안드로이드의 레이아웃을 보면, 굳이 레이아웃 하나로 구성이 가능한데, 편하게 코딩하게 위해 여러개 생성하는 경우가 많다. 불필요한 객체는 생성하지 않는 것이 좋으므로, 최소한으로 사용하는 버릇을 들여보자.
안드로이드에서 opencv를 설치 및 설정하는 방법에 대해 알아보도록 하겠다.nvidia에서는 이런 과정을 모두 세팅해준다고는 하나 너무 지저분한 것들을 다설치해 버린다.ㅠ opencv를 사용하기 위해서는 우선, android용 opencv를 설치해야한다.http://opencv.org/downloads.html 위 링크를 통해 최신버전의 android용 opencv를 설치하자.opencv를 설치하기 전에, 혹시 ndk설치 및 설정도 하지 않았다면, 다음 링크를 통해 우선 ndk 개발환경 구축부터 하자. http://sks3297.tistory.com/87 ndk 개발환경 구축 및 opencv설치가 완료되었다면, 이제 opencv를 설정하고 활용해보자. 1. Android.mk 변경Android.mk 파..
android에서 자바 코드로 작성 외, C또는 C++로 코드를 작성하기위해서는 NDK를 설치해야한다.이를 설치하기 위한 방법 및 세팅에 대해 알아보곘다. 우선, Cygwin을 설치 해야한다.http://cygwin.com/install.html위 경로로 들어가서 cygwin을 설치한다. 32bit, 64bit를 확인하고 설치하기 바란다. Cygwin을 설치하게 되면, 다음과 같은 사이트 정보가 보이며, 아무거나 선택해도 괜찮다. 나의 경우에는 http://ftp.yz.yama......... 사이트를 선택해서 했다. 이를 확인하고 다음을 누르게 되면 아래와 같은 창이 보이게 된다. 모두, default라고 표기가 되어있으며, 우리는 Devel의 default를 선택하여 install문구로 변경한 후 다..
이미지를 xml형식으로 저장하기 위한 방법은 무엇이 있는지 알아보자. 우선, 굉장히 쉬운 방법이 있다. cvSave()라는 함수를 사용하는 것이다. 저장하기 CvMat cm; cvSave( "xml_path/test.xml", &cm); 불러오기 CvMat* A1 = (CvMat*)cvLoad("xml_path/test.xml"); 하지만, 이런 방법을 사용하면, xml이 하나 만들어지는것 같다... xml에 내가 원하는 태그로 원하는 만큼 저장하기 위해서는 CvFileStorage 구조체를 사용하면 되는 것 같다. 저장하기 CvFileStorage* fs = cvOpenFileStorage("xml_path/test.xml", 0, CV_STORAGE_WRITE); cvWrite( fs, "mytag"..
C++에서 json파싱을 하기 위한 방법으로 JsonCpp를 많이 사용한다고 한다.라이브러리다. 이것을 사용해서 Json파싱을 할 수 있도록 설치 및 설정을 해보자. 우선, JsonCpp를 아래 링크로 들어가서 다운로드 받는다.http://sourceforge.net/projects/jsoncpp/ 파일을 다운받아 압축을 풀어보면, makefiles\vs71\jsoncpp.sln 을 연다. 이를 빌드하여 lib파일을 생성해야한다. 하지만, 바로 빌드하기 전에 설정할 것이 있다. 우선, sin파일을 열어보면 다음과 같이 3개의 프로젝트가 있을 것이다. (jsontest, lib_json, test_lib_json) "각각의 프로젝트 속성 -> 구성속성 -> C/C++ -> 코드 생성"에서 "런타임 라이브러..
내가 지정한 디렉터리의 파일을 가져오고 싶을 떄는 io.h에 정의 된 _finddata_t 구조체를 사용한다. _finddata_t 구조는 다음과 같은 요소가 포함 되어있다. unsigned attrib 파일의 특성 time_t time_create 파일 작성 (-1L FAT 파일 시스템에 대한) 시간 time_t time_access 마지막 파일 액세스 (–1L FAT 파일 시스템에 대 한) 시간 time_t time_write 파일에 마지막으로 쓴 시간 _fsize_t size 길이 (바이트) char name [ _MAX_PATH] 파일의 이름입니다. 위 파일을 가져올 구조체를 활용해서 다음 아래의 함수를 이용해, 쉽게 파일 목록을 받아올 수 있다. _findfirst검색 하고자하는 파일목록의 첫번..
YCbCr을 이용하면, 입을 검출할 수 있다는 논문을 보았다. 헌데.. 잘 검출이 되지 않는다. 왜지... 생각은 이렇다. 얼굴영역의 입은 다른 구역보다 색이 붉다. 그렇다면 이런 특성을 이용하면, 입을 검출할 수 있다. (아래 사진은 탤런트 김수현이다.) 원본 이미지에서 Cr성분 1채널로 변경 후, 이를 이진화 처리한다. 이진화 처리된 값은 입술 뿐만 아니라 다른 영역도 조금 잡게 된다. 이는 모폴로지 연산을 통해 처리하면 된다. 우선 침식을 통해 잡음을 제거하고, 팽창을 통해 그 위치를 확실하게 해준다. #include "cv.h" #include "highgui.h" IplImage* getCr(IplImage *image); int main() { // Load original image, Ima..
YCbCr를 이용한 손을 검출하는 방법을 포스팅하겠다. 이 방법을 알기위해서는 우선 YCbCr이 무엇인지 부터 알아야 한다. YCbCr(YCC)는 절대 색공간이 아닌 RGB정보를 인코딩하는 방식이다. Y는 휘도성분 즉, 밝기에 대한 값이며, Cb와 Cr은 색차 성분이다. RGB에서 YCbCr 색공간의 변경공식은 다음과 같다. Y = 0.29900R + 0.58700G + 0.11400B Cb = -0.16874R - 0.33126G + 0.50000B Cr = 0.50000R - 0.41869G - 0.08131B 영상을 처리하는데 있어, RGB는 세 개의 요소가 시각적으로 균일한 정보를 가지고 있는 반면에, YCbCr은 휘도성분(Y)과 색차 성분(Cb, Cr)을 가지기 때문에 피부, 눈, 입 같은 요소..
ROI는 원본 이미지에서 관심영역을 추출할 수 있도록 해준다. // for each face draw the bounding rectangle for(i = 0; i total : 0); i++) { CvRect *r = (CvRect*)cvGetSeqElem(faces, i); CvPoint pt1 = { r->x, r->y }; CvPoint pt2 = { r->x + r->width, r->y + r->height }; cvRectangle(image, pt1, pt2, CV_RGB(0, 84, 255), 3, 8, 0); cvSetImageROI(image, cvRect(pt1.x, pt1.y, r->width, r->height)); cvAddS(image, cv..
- Total
- Today
- Yesterday