0

グレースケールに変換する小さなプログラムを作成するのに問題があります。BMP ファイルを unsigned char にロードし、これを CUDA 関数に送信する必要があります ( http://www.mindfiresolutions.com/Image-Processing-with-CUDA-650.phpを見つけました)。

CImg を使用しましたが、値を unsigned char として保存して CUDA 関数に送信することはできません (戻り値はグレースケール画像ではありません)。画像を unsigned char としてロードするにはどうすればよいですか

px[0] = R , px[1] = G, px[2] = B, px[3] = A等々。

小さすぎる画像でテストしている可能性がありますか?(10 x 10 ピクセル)。

4

2 に答える 2

1

最初のステップは、画像ファイルをメモリにロードすることです

それが bmp の場合、lib をロードする非常に単純なビットマップがあります。次に、CPU で unsigned char[] 配列として取得したら、任意の CUDA 関数を使用して GPU にコピーし、作業することができます。

opencv画像処理ライブラリは CUDA を非常によくサポートするようになりました。その GPU 画像形式は、CUDA で独自の画像処理タスクを書き始めるのに非常に適しています。

そしてもちろん、必要なすべてのロード/保存/表示機能を備えています。

于 2012-06-08T16:16:26.860 に答える
0

これは、 OpenCVと CUDAを統合する方法を示すデモ アプリケーションです。OpenCV使用してディスクから画像を読み込み、CUDA使用してグレースケールに変換します。

これをダウンロードして、プロジェクト ページでコードを確認できます。基本的には、新しいfloat配列を作成して元のunsigned charデータを格納し、処理のために GPU に送信します。

于 2012-06-08T16:20:41.863 に答える