利用OpenCV将图片反色

来源:互联网 发布:windows hiberfil.sys 编辑:程序博客网 时间:2024/05/29 12:22
#include <opencv\highgui.h>#include <Windows.h>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很强大提供了很多的功能,大家可以自己去试一试!

0 0
原创粉丝点击