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

📄 18-3.cpp

📁 基于OpenCV的计算机视觉技术实现.rar
💻 CPP
字号:

// ************************* 程序 18-3 ****************************
/*** 程序功能:
	对图像进行反转:如果输入的参数设置为:
[LOW_IN, HIGH_IN] = [0,1] 和 [LOW_OUT, HIGH_OUT] = [1,0]
那么得到输入图像的反转片,运行得到图像反转。

// ***************************************************************/


//
/*

#include "cv.h"
#include "highgui.h"



int ImageAdjust ( IplImage *src, IplImage *dst, double low, double high, // X方向:
           double bottom, double top, // Y方向:
           double gamma )
{
    if ( low <0 &&
         low> 1 &&
         high <0 &&
         high> 1 &&
         bottom <0 &&
         bottom> 1 &&
         top <0 &&
         top> 1 &&
         low > high )
    {
        return -1;
    }
    double low2 = low*255;
    double high2 = high*255;
    double bottom2 = bottom*255;
    double top2 = top*255;
    double err_in = high2 - low2;
    double err_out = top2 - bottom2;

    int x, y;
    double val;
    //char *src, *result;

    // 反转变换
    for ( y = 0; y < src->height; y++ )
    {
        for ( x = 0; x < src->width; x++ )
        {
            val = ( ( uchar * ) ( src->imageData + src->widthStep * y ) )[x]; 
            val = pow ( ( val - low2 ) / err_in, gamma ) * err_out + bottom2;
            if ( val > 255 )
            {
                val = 255;
            } if ( val < 0 )
            {
                val = 0;
            } // src 必须在[low,high]范围里
            ( ( uchar * ) ( dst->imageData + dst->widthStep * y ) )[x] = ( uchar ) val;
        }
    }
    return 0;
}

int main ( int argc, char **argv )
{
    IplImage *src = 0, *dst = 0;

    if ( argc != 2 || ( src = cvLoadImage ( argv[1], 0 ) ) == NULL )  // force to gray image
    {
        return -1;
    }

    cvNamedWindow ( "src", 1 );
    cvNamedWindow ( "result", 1 );

    dst = cvCloneImage ( src );
    // 输入参数 [0,1] 和 [1,0], gamma=1
    if ( ImageAdjust ( src, dst, 0, 1, 1, 0, 1 ) != 0 )
    {
        return -1;
    }

    cvShowImage ( "src", src );
    cvShowImage ( "result", dst );
    cvWaitKey ( 0 );

    cvDestroyWindow ( "src" );
    cvDestroyWindow ( "result" );
    cvReleaseImage ( &src );
    cvReleaseImage ( &dst );

    return 0;
}


//*/

⌨️ 快捷键说明

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