Python版OpenCVの機能をC++に移植しているのですが、以下のPythonコードをC++版のOpenCVでどのように書けば良いのかわからなくなりました。一行で書けなくても結構ですので、どなたか助けて頂けると幸いです。
imgA,B,Cはそれぞれfloat型1チャンネル画像(numpyの2darray)です。
imgA[imgB > 0] = imgC[imgB > 0]
imgA[imgB > 0] = imgC[imgC > 0]
とはC++の計算式では、
imgA[0or1] = imgC[0or1];
となるので、imgのA,B,Cを配列だと仮定するならかなり難しい事になりますね。
まず、imgのA,B,Cは配列なのか、リストなのか文面から分かりません。この辺を定義して下さるとアドバイスしやすくなりますよ。
C++ に移植する以前に numpy でもこのような演算はできないはずですよ。
imgA.shape = imgB.shape = imgC.shape で
imgA[imgB > 0] = imgC[imgB > 0]
ならわかりますが、
imgA[imgB > 0] = imgC[imgC > 0]
だと、imgB > 0 が True の要素と imgC > 0 が True の要素が一致するとは限らないのでこのような代入はできません。
imgC[imgC > 0]は、
まぁ、ただの誤字じゃない?
ご指摘の通りimgC[imgB>0]の誤りでした。修正致しました。
最初
imgA[(imgB>0)&(imgC>0)] = imgC[(imgB>0)&(imgC>0)]
こうしたいのかと思いました
回答2件
あなたの回答
tips
プレビュー