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

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

    IppAND 함수도 세 개의 영상을 인자로 받으며, img1 영상과 img2 영상의 AND 연산 결과를 img3 영상에 저장한다. IppAND 함수의 구현은 소스 7-5에 나타내었다.

    소스 7-5 AND 연산의 구현(IppEnhance.cpp)
    bool IppAND(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] = static_cast<BYTE>(p1[i] & p2[i]);
        }
    
        return true;
    }
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.