使用OpenCv把图片转为字符画

#include <iostream>

#include <iomanip>

#include <fstream>

#include <cv.h>

#include <highgui.h>



using namespace std;



int main(int argc,char** argv)

{

    IplImage* pImg;

    ofstream fs(argv[2]);

    if(!fs) return 1;

    if( argc >= 2 && (pImg = cvLoadImage( argv[1], 0)) != 0 ) {

        CvScalar s;

        for(int i=0; i< pImg->height; ) {

            for(int j=0; j< pImg->width; ) {

                s=cvGet2D(pImg,i,j);

                int a= s.val[0];

                if(a<40) fs << "@";

                else if(a>=40 && a<80) fs << "2";

                else if(a>=80 && a<150) fs << "1";

                else if(a>=150 && a<200) fs << ".";

                else fs << " ";

                j += 2;

            }

            fs << endl;

            i += 4;

        }

        fs.close();

        cvNamedWindow( "Window1", CV_WINDOW_AUTOSIZE ); 

        cvShowImage( "Window1", pImg ); 

        cvWaitKey(-1); 

        cvDestroyWindow( "Window1" );

        cvReleaseImage( &pImg );

        return 0;

    }

}

我的OpanCv装在C盘

编译时使用的是g++ pic.cpp -o pic -Wall  -O3 -L"C:\OpenCv\lib" -I"C:\Opencv\include\opencv" -lcv -lcxcore -lhighgui

程序需要两个参数,一个图片名,一个文件名,用来保存转化的字符

例如  pic exm.jpg exm.txt

 

运行效果如下

使用OpenCv把图片转为字符画

 

使用OpenCv把图片转为字符画

 

当然,你得用等宽字体查看

呵呵,没太大意义,就是好玩

你可能感兴趣的:(opencv)