OpenCVの例では主にファイルにある画像を取り扱うように出来ています。すでにメモリに画像が入っている時にはどうしたらいいのか考えました。メモリ上に512*512のバイト列(1画素8ビットのグレイレベルデータ)があるとします。OpenCV2.1では画像をMat(行列)型で扱えるので、下記のようにしました。
 
 Mat *image1 = new Mat(512,512,CV_8UC1);
  //画像用Matインスタンスの作成 8bit
 memcpy(image1->data, imagedata, 512*512);
  //画像データをimage1->dataに読み込む
           //imagedataは512*512バイトの画像列の先頭アドレス
 Mat *image2 = new Mat(512,512,CV_8UC1);
  //画像用Matインスタンスの作成 8bit
 memcpy(image2->data, imagedata2, 512*512);
  //画像データをimage1->dataに読み込む
 Mat *difImg = new Mat(512,512,CV_8UC1);
 absdiff((Mat &)*image2, (Mat &)*image1, (Mat &)*difImg);
  //差画像の作成
//以下、表示
 namedWindow("img1", CV_WINDOW_AUTOSIZE);
 cvMoveWindow("img1", 50, 50);
 imshow("img1", (Mat &)*image1);
 namedWindow("img2", CV_WINDOW_AUTOSIZE);
 cvMoveWindow("img2", 580, 50);
 imshow("img2", (Mat &)*image2);
 namedWindow("dif", CV_WINDOW_AUTOSIZE);
 cvMoveWindow("dif", 50, 600);
 imshow("dif", (Mat &)*difImg);
 namedWindow("dif*10", CV_WINDOW_AUTOSIZE);
 cvMoveWindow("dif*10", 580, 600);
 imshow("dif*10", (Mat &)*difImg2);
 waitKey(0);
 cvDestroyWindow ("img1");
 cvDestroyWindow ("img2");
 cvDestroyWindow ("dif");
 cvDestroyWindow ("dif*10");