使用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; } }
编译时使用的是g++ pic.cpp -o pic -Wall -O3 -L"C:\OpenCv\lib" -I"C:\Opencv\include\opencv" -lcv -lcxcore -lhighgui
程序需要两个参数,一个图片名,一个文件名,用来保存转化的字符
例如 pic exm.jpg exm.txt
运行效果如下
当然,你得用等宽字体查看
呵呵,没太大意义,就是好玩