⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pixeltopixelmorpher.cpp

📁 微软的基于HMM的人脸识别原代码, 非常经典的说
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            IlMaxRed = MAX3( leftPixel->red, temp1, temp2 );
            IlMinRed = MIN3( leftPixel->red, temp1, temp2 );
            temp1 = ( (rightPixel - 1)->red + rightPixel->red ) >> 1;
            temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
            IrMaxRed = MAX3( rightPixel->red, temp1, temp2 );
            IrMinRed = MIN3( rightPixel->red, temp1, temp2 );
            // Green
            temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
            temp2 = ( (leftPixel + 1)->green + leftPixel->green ) >> 1;
            IlMaxGreen = MAX3( leftPixel->green, temp1, temp2 );
            IlMinGreen = MIN3( leftPixel->green, temp1, temp2 );
            temp1 = ( (rightPixel - 1)->green + rightPixel->green ) >> 1;
            temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
            IrMaxGreen = MAX3( rightPixel->green, temp1, temp2 );
            IrMinGreen = MIN3( rightPixel->green, temp1, temp2 );
            // Blue
            temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
            temp2 = ( (leftPixel + 1)->blue + leftPixel->blue ) >> 1;
            IlMaxBlue = MAX3( leftPixel->blue, temp1, temp2 );
            IlMinBlue = MIN3( leftPixel->blue, temp1, temp2 );
            temp1 = ( (rightPixel - 1)->blue + rightPixel->blue ) >> 1;
            temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
            IrMaxBlue = MAX3( rightPixel->blue, temp1, temp2 );
            IrMinBlue = MIN3( rightPixel->blue, temp1, temp2 );

            // Red
            temp1 = leftPixel->red - IrMaxRed;
            temp2 = IrMinRed - leftPixel->red;
            DlRed = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->red - IlMaxRed;
            temp2 = IlMinRed - rightPixel->red;
            DrRed = MAX3( 0, temp1, temp2 );
            // Green
            temp1 = leftPixel->green - IrMaxGreen;
            temp2 = IrMinGreen - leftPixel->green;
            DlGreen = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->green - IlMaxGreen;
            temp2 = IlMinGreen - rightPixel->green;
            DrGreen = MAX3( 0, temp1, temp2 );
            // Blue
            temp1 = leftPixel->blue - IrMaxBlue;
            temp2 = IrMinBlue - leftPixel->blue;
            DlBlue = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->blue - IlMaxBlue;
            temp2 = IlMinBlue - rightPixel->blue;
            DrBlue = MAX3( 0, temp1, temp2 );

        } // case 0
        break;
    case -1: // xState = -1, yState = 0
        {
            // Red
            temp2 = ( (leftPixel + 1)->red + leftPixel->red ) >> 1;
            IlMaxRed = MAX2( leftPixel->red, temp2 );
            IlMinRed = MIN2( leftPixel->red, temp2 );
            temp1 = ( (rightPixel - 1)->red + rightPixel->red ) >> 1;
            temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
            IrMaxRed = MAX3( rightPixel->red, temp1, temp2 );
            IrMinRed = MIN3( rightPixel->red, temp1, temp2 );
            // Green
            temp2 = ( (leftPixel + 1)->green + leftPixel->green ) >> 1;
            IlMaxGreen = MAX2( leftPixel->green, temp2 );
            IlMinGreen = MIN2( leftPixel->green, temp2 );
            temp1 = ( (rightPixel - 1)->green + rightPixel->green ) >> 1;
            temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
            IrMaxGreen = MAX3( rightPixel->green, temp1, temp2 );
            IrMinGreen = MIN3( rightPixel->green, temp1, temp2 );
            // Blue
            temp2 = ( (leftPixel + 1)->blue + leftPixel->blue ) >> 1;
            IlMaxBlue = MAX2( leftPixel->blue, temp2 );
            IlMinBlue = MIN2( leftPixel->blue, temp2 );
            temp1 = ( (rightPixel - 1)->blue + rightPixel->blue ) >> 1;
            temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
            IrMaxBlue = MAX3( rightPixel->blue, temp1, temp2 );
            IrMinBlue = MIN3( rightPixel->blue, temp1, temp2 );

            // Red
            temp1 = leftPixel->red - IrMaxRed;
            temp2 = IrMinRed - leftPixel->red;
            DlRed = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->red - IlMaxRed;
            temp2 = IlMinRed - rightPixel->red;
            DrRed = MAX3( 0, temp1, temp2 );
            // Green
            temp1 = leftPixel->green - IrMaxGreen;
            temp2 = IrMinGreen - leftPixel->green;
            DlGreen = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->green - IlMaxGreen;
            temp2 = IlMinGreen - rightPixel->green;
            DrGreen = MAX3( 0, temp1, temp2 );
            // Blue
            temp1 = leftPixel->blue - IrMaxBlue;
            temp2 = IrMinBlue - leftPixel->blue;
            DlBlue = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->blue - IlMaxBlue;
            temp2 = IlMinBlue - rightPixel->blue;
            DrBlue = MAX3( 0, temp1, temp2 );

        } // case -1
        break;
    case 1: // xState = 1, yState = 0
        {
            // Red
            temp1 = ( (leftPixel - 1)->red + leftPixel->red ) >> 1;
            IlMaxRed = MAX2( leftPixel->red, temp1 );
            IlMinRed = MIN2( leftPixel->red, temp1 );
            temp1 = ( (rightPixel - 1)->red + rightPixel->red ) >> 1;
            temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
            IrMaxRed = MAX3( rightPixel->red, temp1, temp2 );
            IrMinRed = MIN3( rightPixel->red, temp1, temp2 );
            // Green
            temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
            IlMaxGreen = MAX2( leftPixel->green, temp1 );
            IlMinGreen = MIN2( leftPixel->green, temp1 );
            temp1 = ( (rightPixel - 1)->green + rightPixel->green ) >> 1;
            temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
            IrMaxGreen = MAX3( rightPixel->green, temp1, temp2 );
            IrMinGreen = MIN3( rightPixel->green, temp1, temp2 );
            // Blue
            temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
            IlMaxBlue = MAX2( leftPixel->blue, temp1 );
            IlMinBlue = MIN2( leftPixel->blue, temp1 );
            temp1 = ( (rightPixel - 1)->blue + rightPixel->blue ) >> 1;
            temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
            IrMaxBlue = MAX3( rightPixel->blue, temp1, temp2 );
            IrMinBlue = MIN3( rightPixel->blue, temp1, temp2 );

            // Red
            temp1 = leftPixel->red - IrMaxRed;
            temp2 = IrMinRed - leftPixel->red;
            DlRed = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->red - IlMaxRed;
            temp2 = IlMinRed - rightPixel->red;
            DrRed = MAX3( 0, temp1, temp2 );
            // Green
            temp1 = leftPixel->green - IrMaxGreen;
            temp2 = IrMinGreen - leftPixel->green;
            DlGreen = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->green - IlMaxGreen;
            temp2 = IlMinGreen - rightPixel->green;
            DrGreen = MAX3( 0, temp1, temp2 );
            // Blue
            temp1 = leftPixel->blue - IrMaxBlue;
            temp2 = IrMinBlue - leftPixel->blue;
            DlBlue = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->blue - IlMaxBlue;
            temp2 = IlMinBlue - rightPixel->blue;
            DrBlue = MAX3( 0, temp1, temp2 );

        } // case 1
        break;
    case -3: // xState = 0, yState = -1
        {
            // Red
            temp1 = ( (leftPixel - 1)->red + leftPixel->red ) >> 1;
            temp2 = ( (leftPixel + 1)->red + leftPixel->red ) >> 1;
            IlMaxRed = MAX3( leftPixel->red, temp1, temp2 );
            IlMinRed = MIN3( leftPixel->red, temp1, temp2 );
            temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
            IrMaxRed = MAX2( rightPixel->red, temp2 );
            IrMinRed = MIN2( rightPixel->red, temp2 );
            // Green
            temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
            temp2 = ( (leftPixel + 1)->green + leftPixel->green ) >> 1;
            IlMaxGreen = MAX3( leftPixel->green, temp1, temp2 );
            IlMinGreen = MIN3( leftPixel->green, temp1, temp2 );
            temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
            IrMaxGreen = MAX2( rightPixel->green, temp2 );
            IrMinGreen = MIN2( rightPixel->green, temp2 );
            // Blue
            temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
            temp2 = ( (leftPixel + 1)->blue + leftPixel->blue ) >> 1;
            IlMaxBlue = MAX3( leftPixel->blue, temp1, temp2 );
            IlMinBlue = MIN3( leftPixel->blue, temp1, temp2 );
            temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
            IrMaxBlue = MAX2( rightPixel->blue, temp2 );
            IrMinBlue = MIN2( rightPixel->blue, temp2 );

            // Red
            temp1 = leftPixel->red - IrMaxRed;
            temp2 = IrMinRed - leftPixel->red;
            DlRed = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->red - IlMaxRed;
            temp2 = IlMinRed - rightPixel->red;
            DrRed = MAX3( 0, temp1, temp2 );
            // Green
            temp1 = leftPixel->green - IrMaxGreen;
            temp2 = IrMinGreen - leftPixel->green;
            DlGreen = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->green - IlMaxGreen;
            temp2 = IlMinGreen - rightPixel->green;
            DrGreen = MAX3( 0, temp1, temp2 );
            // Blue
            temp1 = leftPixel->blue - IrMaxBlue;
            temp2 = IrMinBlue - leftPixel->blue;
            DlBlue = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->blue - IlMaxBlue;
            temp2 = IlMinBlue - rightPixel->blue;
            DrBlue = MAX3( 0, temp1, temp2 );

        } // case -3
        break;
    case 3: // xState = 0, yState = 1
        {
            // Red
            temp1 = ( (leftPixel - 1)->red + leftPixel->red ) >> 1;
            temp2 = ( (leftPixel + 1)->red + leftPixel->red ) >> 1;
            IlMaxRed = MAX3( leftPixel->red, temp1, temp2 );
            IlMinRed = MIN3( leftPixel->red, temp1, temp2 );
            temp1 = ( (rightPixel - 1)->red + rightPixel->red ) >> 1;
            IrMaxRed = MAX2( rightPixel->red, temp1 );
            IrMinRed = MIN2( rightPixel->red, temp1 );
            // Green
            temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
            temp2 = ( (leftPixel + 1)->green + leftPixel->green ) >> 1;
            IlMaxGreen = MAX3( leftPixel->green, temp1, temp2 );
            IlMinGreen = MIN3( leftPixel->green, temp1, temp2 );
            temp1 = ( (rightPixel - 1)->green + rightPixel->green ) >> 1;
            IrMaxGreen = MAX2( rightPixel->green, temp1 );
            IrMinGreen = MIN2( rightPixel->green, temp1 );
            // Blue
            temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
            temp2 = ( (leftPixel + 1)->blue + leftPixel->blue ) >> 1;
            IlMaxBlue = MAX3( leftPixel->blue, temp1, temp2 );
            IlMinBlue = MIN3( leftPixel->blue, temp1, temp2 );
            temp1 = ( (rightPixel - 1)->blue + rightPixel->blue ) >> 1;
            IrMaxBlue = MAX2( rightPixel->blue, temp1 );
            IrMinBlue = MIN2( rightPixel->blue, temp1 );

            // Red
            temp1 = leftPixel->red - IrMaxRed;
            temp2 = IrMinRed - leftPixel->red;
            DlRed = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->red - IlMaxRed;
            temp2 = IlMinRed - rightPixel->red;
            DrRed = MAX3( 0, temp1, temp2 );
            // Green
            temp1 = leftPixel->green - IrMaxGreen;
            temp2 = IrMinGreen - leftPixel->green;
            DlGreen = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->green - IlMaxGreen;
            temp2 = IlMinGreen - rightPixel->green;
            DrGreen = MAX3( 0, temp1, temp2 );
            // Blue
            temp1 = leftPixel->blue - IrMaxBlue;
            temp2 = IrMinBlue - leftPixel->blue;
            DlBlue = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->blue - IlMaxBlue;
            temp2 = IlMinBlue - rightPixel->blue;
            DrBlue = MAX3( 0, temp1, temp2 );

        } // case 3
        break;
    case -2: // xState = 1, yState = -1
        {
            // Red
            temp1 = ( (leftPixel - 1)->red + leftPixel->red ) >> 1;
            IlMaxRed = MAX2( leftPixel->red, temp1 );
            IlMinRed = MIN2( leftPixel->red, temp1 );
            temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
            IrMaxRed = MAX2( rightPixel->red, temp2 );
            IrMinRed = MIN2( rightPixel->red, temp2 );
            // Green
            temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
            IlMaxGreen = MAX2( leftPixel->green, temp1 );
            IlMinGreen = MIN2( leftPixel->green, temp1 );
            temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
            IrMaxGreen = MAX2( rightPixel->green, temp2 );
            IrMinGreen = MIN2( rightPixel->green, temp2 );
            // Blue
            temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
            IlMaxBlue = MAX2( leftPixel->blue, temp1 );
            IlMinBlue = MIN2( leftPixel->blue, temp1 );
            temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
            IrMaxBlue = MAX2( rightPixel->blue, temp2 );
            IrMinBlue = MIN2( rightPixel->blue, temp2 );

            // Red
            temp1 = leftPixel->red - IrMaxRed;
            temp2 = IrMinRed - leftPixel->red;
            DlRed = MAX3( 0, temp1, temp2 );
            temp1 = rightPixel->red - IlMaxRed;
            temp2 = IlMinRed - rightPixel->red;
            DrRed = MAX3( 0, temp1, temp2 );
            // Green
            temp1 = leftPixel->green - IrMaxGreen;
            temp2 = IrMinGreen - leftPixel->green;
            DlGreen = MAX3( 0, temp1, temp2 );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -