user-0 提问: C语言图像处理

回复:
user: user-1
content: 老师真的垃圾

user: user-2
content: 你的老师太水了，不调用图形库，纯C处理图形牵扯到底层，图像在屏幕的显示问题。

user: user-3
content: 推荐这本书，我也在看。 张宏林 求是科技 《精通visual C++数字图像处理典型算法及实现》

user: user-4
content: 老师一看就是业余选手

user: user-5

user: user-6
content: 引用 7 楼 baipv008 的回复:打开jpg你不用现成的库？写到天荒地老。   行数|文件    693|C:\Android\Mydroid\external\jpeg\ansi2knr.c    132|C:\Android\Mydroid\external\jpeg\cderror.h    181|C:\Android\Mydroid\external\jpeg\cdjpeg.c    184|C:\Android\Mydroid\external\jpeg\cdjpeg.h    606|C:\Android\Mydroid\external\jpeg\cjpeg.c    402|C:\Android\Mydroid\external\jpeg\ckconfig.c    616|C:\Android\Mydroid\external\jpeg\djpeg.c    433|C:\Android\Mydroid\external\jpeg\example.c    280|C:\Android\Mydroid\external\jpeg\jcapimin.c    161|C:\Android\Mydroid\external\jpeg\jcapistd.c    449|C:\Android\Mydroid\external\jpeg\jccoefct.c    527|C:\Android\Mydroid\external\jpeg\jccolor.c    387|C:\Android\Mydroid\external\jpeg\jcdctmgr.c    909|C:\Android\Mydroid\external\jpeg\jchuff.c     47|C:\Android\Mydroid\external\jpeg\jchuff.h     72|C:\Android\Mydroid\external\jpeg\jcinit.c    293|C:\Android\Mydroid\external\jpeg\jcmainct.c    664|C:\Android\Mydroid\external\jpeg\jcmarker.c    590|C:\Android\Mydroid\external\jpeg\jcmaster.c    106|C:\Android\Mydroid\external\jpeg\jcomapi.c    156|C:\Android\Mydroid\external\jpeg\jconfig.h    610|C:\Android\Mydroid\external\jpeg\jcparam.c    833|C:\Android\Mydroid\external\jpeg\jcphuff.c    354|C:\Android\Mydroid\external\jpeg\jcprepct.c    519|C:\Android\Mydroid\external\jpeg\jcsample.c    388|C:\Android\Mydroid\external\jpeg\jctrans.c    395|C:\Android\Mydroid\external\jpeg\jdapimin.c    275|C:\Android\Mydroid\external\jpeg\jdapistd.c    151|C:\Android\Mydroid\external\jpeg\jdatadst.c    212|C:\Android\Mydroid\external\jpeg\jdatasrc.c    736|C:\Android\Mydroid\external\jpeg\jdcoefct.c    881|C:\Android\Mydroid\external\jpeg\jdcolor.c    176|C:\Android\Mydroid\external\jpeg\jdct.h    269|C:\Android\Mydroid\external\jpeg\jddctmgr.c    651|C:\Android\Mydroid\external\jpeg\jdhuff.c    201|C:\Android\Mydroid\external\jpeg\jdhuff.h    381|C:\Android\Mydroid\external\jpeg\jdinput.c    512|C:\Android\Mydroid\external\jpeg\jdmainct.c   1360|C:\Android\Mydroid\external\jpeg\jdmarker.c    576|C:\Android\Mydroid\external\jpeg\jdmaster.c    757|C:\Android\Mydroid\external\jpeg\jdmerge.c    668|C:\Android\Mydroid\external\jpeg\jdphuff.c    290|C:\Android\Mydroid\external\jpeg\jdpostct.c    478|C:\Android\Mydroid\external\jpeg\jdsample.c    143|C:\Android\Mydroid\external\jpeg\jdtrans.c    252|C:\Android\Mydroid\external\jpeg\jerror.c    291|C:\Android\Mydroid\external\jpeg\jerror.h    168|C:\Android\Mydroid\external\jpeg\jfdctflt.c    224|C:\Android\Mydroid\external\jpeg\jfdctfst.c    283|C:\Android\Mydroid\external\jpeg\jfdctint.c    242|C:\Android\Mydroid\external\jpeg\jidctflt.c    368|C:\Android\Mydroid\external\jpeg\jidctfst.c    389|C:\Android\Mydroid\external\jpeg\jidctint.c    398|C:\Android\Mydroid\external\jpeg\jidctred.c     91|C:\Android\Mydroid\external\jpeg\jinclude.h    186|C:\Android\Mydroid\external\jpeg\jmem-android.c    167|C:\Android\Mydroid\external\jpeg\jmemansi.c    638|C:\Android\Mydroid\external\jpeg\jmemdos.c    289|C:\Android\Mydroid\external\jpeg\jmemmac.c   1118|C:\Android\Mydroid\external\jpeg\jmemmgr.c    276|C:\Android\Mydroid\external\jpeg\jmemname.c    109|C:\Android\Mydroid\external\jpeg\jmemnobs.c    198|C:\Android\Mydroid\external\jpeg\jmemsys.h    387|C:\Android\Mydroid\external\jpeg\jmorecfg.h    392|C:\Android\Mydroid\external\jpeg\jpegint.h   1100|C:\Android\Mydroid\external\jpeg\jpeglib.h    504|C:\Android\Mydroid\external\jpeg\jpegtran.c    856|C:\Android\Mydroid\external\jpeg\jquant1.c   1310|C:\Android\Mydroid\external\jpeg\jquant2.c    179|C:\Android\Mydroid\external\jpeg\jutils.c     14|C:\Android\Mydroid\external\jpeg\jversion.h    439|C:\Android\Mydroid\external\jpeg\rdbmp.c    253|C:\Android\Mydroid\external\jpeg\rdcolmap.c     38|C:\Android\Mydroid\external\jpeg\rdgif.c    496|C:\Android\Mydroid\external\jpeg\rdjpgcom.c    458|C:\Android\Mydroid\external\jpeg\rdppm.c    387|C:\Android\Mydroid\external\jpeg\rdrle.c    332|C:\Android\Mydroid\external\jpeg\rdswitch.c    500|C:\Android\Mydroid\external\jpeg\rdtarga.c    928|C:\Android\Mydroid\external\jpeg\transupp.c    135|C:\Android\Mydroid\external\jpeg\transupp.h    442|C:\Android\Mydroid\external\jpeg\wrbmp.c    399|C:\Android\Mydroid\external\jpeg\wrgif.c    583|C:\Android\Mydroid\external\jpeg\wrjpgcom.c    268|C:\Android\Mydroid\external\jpeg\wrppm.c    305|C:\Android\Mydroid\external\jpeg\wrrle.c    253|C:\Android\Mydroid\external\jpeg\wrtarga.c  36349 ←总行数(^_^)

user: user-7
content: 打开jpg你不用现成的库？写到天荒地老。

user: user-8
content: 不用庫怎麼做到? 難道要用上組合語言跟C?

user: user-9
content: 还非诚勿扰

user: user-10
content: 推荐这本书，我也在看。 张宏林 求是科技 《精通visual C++数字图像处理典型算法及实现》

user: user-6
content: 那也肯定能搜到。 况且OpenCV是开源的。  Image Magick也是开源的。

user: user-0
content: 老师要求不要这些辅助工具…………必须要C语言代码实现…………自己编函数…………不是调用库函数之类的……不过谢了

user: user-5
content: //////////////////////////////////////////////////////////////////////// // // 用的是opencv   // 想详细学习图像处理还的自己看书   opencv有很多是直接封装好了的 // 该程序从文件中读入一幅图像，将之反色，然后显示出来.  // //////////////////////////////////////////////////////////////////////// #include <stdlib.h> #include <stdio.h> #include <math.h> #include <cv.h> #include <highgui.h>    int main(int argc, char *argv[]) {   IplImage* img = 0;    int height,width,step,channels;   uchar *data;   int i,j,k;      //if(argc<2){   //  printf("usage: main <image-file-name>\n\7");   //  exit(0);   //}      // load an image     img=cvLoadImage("C:\\aa.jpg");   if(!img){     printf("Could not load image file: %s\n",argv[1]);     exit(0);   }      // get the image data   height    = img->height;   width     = img->width;   step      = img->widthStep;   channels  = img->nChannels;   data      = (uchar *)img->imageData;   printf("Processing a %dx%d image with %d channels\n",height,width,channels);      // create a window   cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);    cvMoveWindow("mainWin", 100, 100);      // invert the image   // 相当于 cvNot(img);   // IplImage *pDstImg = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);   // cvNot(img, pDstImg);   for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)     data[i*step+j*channels+k]=255-data[i*step+j*channels+k];      // show the image   cvShowImage("mainWin", img );      // wait for a key   cvWaitKey(0);      // release the image   cvReleaseImage(&img );   return 0; }