带有第三方库的c++图像处理教程

c++ image processing tutorials withuot 3rd party library

本文关键字:c++ 图像处理 教程 第三方      更新时间:2023-10-16

我想学习C++中的图像处理,但我不想使用任何第三方库进行图像处理。使用库来显示图像是可以的,但所有操作都要手动完成。

请给我指一些好的教程。我是这个领域的初学者,所以我还需要知道如何显示图像。

你似乎缺乏数字图像处理的基本知识,我推荐你读这本书。数字图像处理(第三版)Rafael C.Gonzalez/Richard E.Woodshttp://www.amazon.com/dp/013168728X

对于使用OpenCV(我很熟悉)的基本操作,这里有一个例子:

/*
function:image reverse
*/  
#include "stdafx.h"  
#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 image   
    img=cvLoadImage(argv[1],-1);  
    if(!img)  
    {  
        printf("Could not load image file: %sn",argv[1]);  
        exit(0);  
    }  
    // acquire image info  
    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 display window  
    cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);   
    cvMoveWindow("mainWin", 100, 100);  
    // reverse image 
    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];  
    // display reversed image  
    cvShowImage("mainWin", img );  
    cvWaitKey(0);  
    cvReleaseImage(&img );  
    printf("height=%d  width=%d step=%d channels=%d",height,width,step,channels);  
    return 0;  
}  

尝试CImg(它是完全独立的)-http://cimg.sourceforge.net/