2011-09-17 12 views
2

OpenCV 2.2.0での画像処理に1年以上携わっています。OpenCVで巨大な画像を割り当てられませんでした

CvMatで同じ割り当てが行われている場合、2GB以上のIplImageを割り当てようとするとメモリ割り当てエラーが発生します。私はCvMatを使用したいものを割り当てることができます、私も> 10ギガバイトを試しました。

OpenCVは64ビットコンパイルされ、この単純なアプリケーションでもありました。さらに、私は、タスクマネージャーからわかるように、アプリケーションが64ビットモードで動作することを確信しています。 O.S. (Windows 7)も64ビットです。

int main(int argc, char* argv[]) 
{ 
    printf("trying to allocate >2GB matrix...\n"); 
    CvMat *huge_matrix = cvCreateMat(40000,30000,CV_16UC1); 
    cvSet(huge_matrix,cvScalar(5)); 
    printf("...done!\n\n"); 
    system("PAUSE"); 

    printf("trying to allocate >2GB image...\n"); 
    IplImage *huge_img = cvCreateImage(cvSize(40000,30000),IPL_DEPTH_16U, 1); 
    cvSet(huge_img,cvScalar(5)); 
    printf("...done!\n\n"); 
    system("PAUSE"); 

    cvReleaseMat(&huge_matrix); 
    cvReleaseImage(&huge_img); 
} 

エラーメッセージは、「メモリ不足です:未知の機能に...それはバグすることができ、それはの分野では、総画像サイズを格納するため、

答えて

2

IplImage構造が2GBその後、大きな画像をサポートしていません? intタイプ。あなたには、いくつかのハックと2Gbの後、IplImage大きなを割り当てる場合でも、他の方法は、それを正しく処理できません。OpenCVのは、Intelの画像処理ライブラリからIplImage構造を継承した形式が変更されるという見込みはありませんので。

巨大な画像を操作するには、より新しい構造(CインタフェースではCvMat、C++インタフェースではcv::Mat)を使用する必要があります。

関連する問題