2016년 12월 16일 금요일

OpenCV Lecture 2-9, gpuMat example

1. Contents
  • gpu 와 cpu 차이
    • gpu 코딩하기
  • 숙제 2
    • gpuMat과 관련된 함수 20개 이상 실습하기
  • 보너스 숙제 (선착순!!)
    • 떨어지는 사각형 클릭하기
    • PPT 참고

      2. PPT


      3. Video


          4. Reference



          #Tags for search
          LUT(Look Up Table), applyColorMap, cvtColor, Fast LUT

          댓글 10개:

          1. 보너스 숙제는 어떤 개념으로 해결해 나가야 하나요? 사각형이 움직이는 처리를 gpu로 하면 빠를거 같다는데 중점을 두는문제인거 같은데... 제가 컴공이 아니라 비쥬얼 시키기가 너무 어렵습니다... 혹시 힌트나 포맷 같은게 있으면 얻을수 있을까요?

            답글삭제
          2. 보너스 숙제는 움직이는 n개 rectangle 그리기, 마우스 클릭 이렇게 크게 2가지 요소이고요. 마우스 이벤트는 다음 강의에 나오고... 여기서는 예습입니다. ^^

            대략 pseudo code(슈도 코드)를 보시면

            ----------------------------
            마우스 이벤트 처리 준비
            while(1)
            {
            n개 rectangle Mat에 그리기.
            imshow.. Mat 그리기
            waitkey(400); //천천히
            마우스 이벤트 처리
            n개 rectangle값 이동
            n개 rectangle 생성 및 삭제 처리
            }

            답글삭제
          3. gpuMat은 어떻게 포인터 접근을 하나요?
            out 이라는 gpuMat을 만들고 out.ptr(x,y)를 하니 정의되지 않은 인터페이스라고 하네요 ㅠ

            답글삭제
            답글
            1. 네 GpuMat은 그렇게 포인트 접근이 되지 않습니다.
              Mat에서 포인트 접근해서 값을 변경하고 GpuMat으로 upload해서 필요한 병렬처리 함수를 사용하는 방식입니다.

              삭제
          4. 추가로 gpuMat을 그냥 cv::erode 등의 필터에 넣으면 오류가 나는 건가요? 제가 그래픽 카드가 없어서 테스트를 못 하고 있어서 ㅠ

            답글삭제
            답글
            1. 네, cuda::GpuMat 은 cuda:: 네임 스페이스에 있는 함수를 사용해야 하고요, erode 같은 경우는

              cv::Ptr erode = cv::cuda::createMorphologyFilter(cv::MORPH_ERODE, src.type(), kernel);
              erode->apply(src, dst);

              이런 식으로 cuda::createMorphologyFilter.. 함수를 사용하네요.

              삭제
          5. cuda.hpp가 없는 상황이면 어떻게 해야하나요? Nvidia에서 Cuda 설치파일을 받아서 설치를 진행했는데 cuda.hpp를 어디서 받는지는 잘 모르겠군요..
            답변주시면 감사하겠습니다!

            답글삭제
            답글
            1. 답변이 늦어 죄송합니다.
              cuda.hpp는 opencv 라이브러리 안에 있습니다. cmake할때, with_cuda 를 체크하고 프로젝트를 생성해서 빌드에 성공하면 cuda를 사용할 수 있고요, 이 파일 위치는 opencv2\core 안에 있기는 한데.. 직접 이 헤더파일을 인클루드해서 사용하지는 않는 것 같아요. opencv.hpp나 cudaalgorithm.hpp 등을 사용하거든요.. 감사합니다.
              파일 찾기는 구글에 everything이라는 툴을 써보세요. 정말 빠르게 파일을 찾을 수 있습니다.

              삭제
          6. https://gist.github.com/konis123/2b5164ca3554bd244ce4bbe0cf9b9c7c

            강의 잘 듣고있습니다!! 많이 알려주세요~~

            답글삭제
            답글
            1. 와~!!!!! 저에게 처음 숙제를 제출하신 분이네요!!!
              살펴 보겠습니다.
              아무도 숙제를 안하셔서...
              감사합니다.

              삭제

          OpenCV Build shared, OpenCV 빌드한 것 공유

          OpenCV 3.1 64bit build (github master downed on 2017-01-31) 64bit for window opencv contribute module 포함 cuda 8.0 tbb 2016-11-28 ( sha...