2017-08-04 11 views
0

私はこの問題についての日々を探していて、解決されたスレッドは見つかりませんでした。 私は、私は、Visual Studio 2013、C++を使用していますシンプルなopenCV大規模な画像または巨大な画像のimread制限Mat bug#3258

src = imread(filepath, 1); 

によって、OpenCVのコードにかなり大きな画像(4ギガバイトを超えたと、どちらか.TIFF/.PNG)をロードする必要があります。

私は96Gb-RAMマシンを使用していますが、これらの大きな画像をOpenCVの「imread」機能で読み込むと、ランタイムアラートが出てきます。実際に読み込み/読み込みが行われるまでは、画像やファイルのサイズを小さくしようとしていました。小さな画像が正しく読み込まれて処理されるため、メモリ/割り当ての問題です。

(全くのコンパイルの問題を)実行していないながら、コンソールは「キャッチ(...)」一方

OpenCV Error: One of arguments' values is out of range (The total matrix size does not fit to "size_t" type) in cv::setSize, file C:\builds\2_4_PackSlave-win32- vc12-shared\opencv\modules\core\src\matrix.cpp, line 126

によって抽出された次のメッセージを、throughingされ、VS2013は、次の警告が表示されます。

Unhandled exception at 0x76385608 in poblacion.exe: Microsoft C++ exception: cv::Exception at memory location 0x00C7EA70

も「読み込まれたシンボルはありません」と主張しています。 Win32のデバッグモードでコンパイルしています。

この問題はバグ#3258ですが、解決されたスレッドは見つかりませんでした。単に議論の対象となっているsize_t型が明確な解決策には至りません... openCVライブラリを経由せずに大きな画像を読む方法があるはずです...

これは誰でも私たちを助けることができますか?わたしはどんな充実した解決策も広めます。

THANXは事前に!

アレックス

答えて

1

size_tサイズはWin32x64プラットフォーム間で異なります。エラーは、マトリックスの寸法がsize_tタイプに収まらないことを示します。

x64構成に切り替えることを検討してください。問題がなくなるはずです。

さらに、Win32構成は、1プロセスあたり4GB以上のRAMを使用することが予想されるアプリケーションには適していません。 これは、Win32アプリケーションを実行している96GBのRAMを搭載したマシンの全機能を使用できないことを意味します。

関連する問題