차영상을 만들려면 일단 영상 두개에 차이가 있어야 하는데,

하나의 동영상으로 프레임 순서의 차이를 두고 그에 따른 차이를 영상으로 표현할려고 합니다.

영상들 정의

    previous_image =  cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
    current_image =  cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
    output =  cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
    diff_image = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);

이렇게 되어있고

작업을 통해 output  영상을 이진화 작업을 해 놓았습니다.

그런후

        cvCopy(current_image,previous_image);
        cvCopy(output,current_image);
        cvAbsDiff(previous_image,current_image, diff_image);

를 통하여 diff_image 에 차영상을 만들었습니다.



접근 및 제어 방법

ex)
for (int i = 0; i < img->height;i++)
        {
            for (int j = 0; j < img->width;j++)
            {
                // 데이터 직접 접근 /제어
                int index = j + i * img->widthStep ;
                unsigned char n_indx = gray->imageData[index] ;      // 해당 픽셀에 접근하여 n_indx 에 픽셀값 저장

     if(n_indx < 100)   //픽셀 값이 100보다 작을경우
                {
                    img->imageData[j+i*(img->widthStep)] = 0;         // img의 픽셀 값을 제어
                }
            }
        }





 




// Visual Studio 2008 , OpenCV 2.1


#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int _tmain(int argc, _TCHAR* argv[])
{

 CvCapture* capture = NULL;
 IplImage * frame = 0;
 IplImage * frame_copy = 0;

 capture = cvCaptureFromFile("sample.avi");
 cvNamedWindow("reuslt", 1);

 for(;;)
 {

  if (!cvGrabFrame(capture))

   break;

  frame = cvRetrieveFrame(capture);
  if (!frame)

   break;

  cvShowImage("result", frame);
  if (cvWaitKey(33) >= 0)

   break;

 }

 cvReleaseImage(&frame_copy);
 cvReleaseCapture(&capture);
}

출처 : http://www.sensibleui.co.kr/7


image_thumb6이전 포스트에서 OpenCV 2.0과 Visual Studio 2008의 연동에 관한 글을 올렸습니다. 그런데 확인을 해보니OpenCV의 새 버전 2.1이 4월에 나왔더군요. 거기다가 여기에는 Visual Studio 2008으로 이미 컴파일된 바이너리가 따로 OpenCV-2.1.0-win32-vs2008.exe 라는 이름으로 올라와 있습니다. 이제는 CMake 설치하고 직접 소스를 컴파일하느라 시간 낭비할 필요가 없게 되었습니다. Visual Studio 2008과 OpenCV를 연동하는 설치에 대해 간결한 설명은 OpenCV 위키OpenCV 2.1.0 with Visual Studio 2008에 잘 소개되어 있습니다. 여기서는 그 기사에 몇 가지 그림을 곁들어 부연하도록 하겠습니다.

 

OpenCV 2.1 설치

현재 OpenCV 위키의 공식 사이트에 들어가자 마자 보이는 다운로드 링크는 2.0 버전입니다. 그 아래에 있는 OpenCV-2.1.0-win32-vs2008.exe를 다운로드 받도록 합니다.

image_thumb1

 

설치는 다음 버튼만 누르면 됩니다. 단, 중간 Install Options에서 OpenCV 2.1 경로 추가는 하도록 하는 것이 좋겠습니다.

image_thumb7 image_thumb8

image_thumb10

image_thumb11 image_thumb12

image_thumb13 image_thumb14

image_thumb15

 

기본 설정대로 설치를 했다면 OpenCV 2.1은 C:\OpenCV2.1에 설치가 되어 있을 것입니다.

 

Visual Studio 2008 설정

도구-옵션을 선택한 후 프로젝트 및 솔루션-VC++ 디렉터리를 선택합니다. 오른쪽 리스트 박스에서 포함 파일을 선택한 후 “C:\OpenCV2.1\include\opencv”를 추가합니다.

image_thumb19

 

그 다음으로는 라이브러리 파일을 선택해 "C:\OpenCV2.1\lib"를 추가합니다.

image_thumb21

 

소스 파일을 선택한 후 아래의 4개 폴더를 추가합니다.

  • "C:\OpenCV2.1\src\cv"
  • "C:\OpenCV2.1\src\cvaux"
  • "C:\OpenCV2.1\src\cxcore"
  • "C:\OpenCV2.1\src\highgui"

    image_thumb23 

     

    Visual Studio 2008 프로젝트 설정

    Alt-F7을 눌러 프로젝트 속성 대화상자를 호출한 후 구성 속성-링커-입력을 선택합니다.

    image_thumb24

     

    추가 종속성 부분에 "cv210.lib cxcore210.lib highgui210.lib"를 추가합니다.

    image61_thumb

     

    여기까지 하면 Visual Studio 2008에서 OpenCV 2.1을 쓸 수 있도록 설정하는 과정이 완료가 됩니다.

  • + Recent posts