CUDA画面の一部しかアクセスできない問題
下記のページ GpuMatの内部を探検してみる
で紹介されているサンプルコード サンプルコード
を自分のコードにかきかえて(この段階でGlobPtrSzに変換しないで、GpuMatのままでもできるなと思いながら) 実行してみたところ 画像の左側3分の1の画素にしかアクセスできない状況に陥った。
しばらく考えたら当たり前のことで、このサンプルコードではグレースケール画像を用いていて、自分のコードではRGB3chの画像を用いていた。
Mat型ではBGRBGR・・・というように配列が連なっているのでこのままでは全画素にアクセスできないという状況。
すなおにGlobPtrSzで実行するとチャンネル数も反映されて解決。
ここで紹介されてるGlobPtrSzよりもPtrStepSzを使うほうがptrも参照可能なのでこっちのほうがいいと思う!