使用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

 

运行效果如下

 

 

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

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

转载于:https://www.cnblogs.com/xianglan/archive/2010/12/01/1893840.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值