利用OpenCV将图片反色

#include 
#include 

INT APIENTRY wWinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPWSTR lpCmdLine, __in int nShowCmd )
{
    //加载一张图片,随便找一张jpg图片放到跟Main.cpp同目录改成test.jpg即可
    IplImage *TestImg = cvLoadImage( "test.jpg" );

    //没有反色之前的窗口
    cvNamedWindow( "正常", CV_WINDOW_AUTOSIZE );
    //显示正常图片
    cvShowImage( "正常", TestImg );

    //////////////////////////////////////////////////////////////////////////
    //开始处理反色
    //反色过后的窗口
    cvNamedWindow( "反色", CV_WINDOW_AUTOSIZE );

    //图片宽px
    const int Width = TestImg->width;

    //图片高px
    const int Height = TestImg->height;

    //通道数( ARGB 为4 RGB为3... )
    const int Channels = TestImg->nChannels;

    //图片的像素数据
    char *ImgData = TestImg->imageData;
    //数据大小长度( 一共有width * height 个像素 但是每一个像素还有Channels个通道每一个通道大小的值为0-0xFF )
    const int DataLen = Width * Height * Channels;

    for( int i = 0; i < DataLen; ++i )
    {
        ImgData[ i ] = 0xFF - ImgData[ i ];
    }

    //显示反色后图片
    cvShowImage( "反色", TestImg );
    //反色处理完毕
    //////////////////////////////////////////////////////////////////////////

    //等待输入,按任意键执行下面代码窗口关闭
    cvWaitKey( 0 );
    //释放图片
    cvReleaseImage( &TestImg );

    //释放窗口
    cvDestroyWindow( "正常" );
    cvDestroyWindow( "反色" );
    return 0;
}
效果如下:

利用OpenCV将图片反色_第1张图片

其他效果如灰度图,锐化等的处理都是控制图像的数据流,当然opencv很强大提供了很多的功能,大家可以自己去试一试!

你可能感兴趣的:(OpenCV,C/C++,Windows)