まだそんなことやってんの?

技術系備忘録ブログがメイン

CUDA画面の一部しかアクセスできない問題

下記のページ GpuMatの内部を探検してみる

で紹介されているサンプルコード サンプルコード

を自分のコードにかきかえて(この段階でGlobPtrSzに変換しないで、GpuMatのままでもできるなと思いながら) 実行してみたところ 画像の左側3分の1の画素にしかアクセスできない状況に陥った。

しばらく考えたら当たり前のことで、このサンプルコードではグレースケール画像を用いていて、自分のコードではRGB3chの画像を用いていた。

Mat型ではBGRBGR・・・というように配列が連なっているのでこのままでは全画素にアクセスできないという状況。

すなおにGlobPtrSzで実行するとチャンネル数も反映されて解決。

ここで紹介されてるGlobPtrSzよりもPtrStepSzを使うほうがptrも参照可能なのでこっちのほうがいいと思う!