더북(TheBook)

그러면 실제 영상의 뺄셈 연산을 수행하는 함수를 작성해보자. 함수의 이름은 IppSub를 사용하기로 하고, IppEnhance.h 파일에 아래와 같이 함수 선언을 추가하자.

bool IppSub(IppByteImage& img1, IppByteImage& img2, IppByteImage& img3);

IppSub 함수도 IppByteImage 클래스의 참조형 인자 세 개를 갖는다. img1img2는 뺄셈 연산의 입력 영상이며, img3은 뺄셈 연산을 수행한 결과가 저장될 영상이다. IppSub 함수의 구현은 소스 7-2에 나타내었다. 전체적인 구조가 IppAdd 함수와 거의 동일하므로, 소스 코드에 대한 자세한 설명은 생략한다.

소스 7-2 뺄셈 연산의 구현(IppEnhance.cpp)
bool IppSub(IppByteImage& img1, IppByteImage& img2, IppByteImage& img3)
{
    int w = img1.GetWidth();
    int h = img1.GetHeight();
    if (w != img2.GetWidth() || h != img2.GetHeight())
        return false;

    img3.CreateImage(w, h);

    int size = img3.GetSize();
    BYTE* p1 = img1.GetPixels();
    BYTE* p2 = img2.GetPixels();
    BYTE* p3 = img3.GetPixels();

    for (int i = 0; i < size; i++)
    {
        p3[i] = limit(p1[i] - p2[i]);
    }

    return true;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.