

opencvによる画像処理プログラムをC++ → Pythonに書き換えています．  
その中で，(120,109,3)の配列の要素ごとの引き算が存在したのですが，この結果が２つのプログラム間で合いません．  
それまでの結果は完全に一致しており，（同じ数）-（同じ数）の計算でしかないはずです．

どのようにすべきか，あるいは何がおかしいのかについてヒントを頂けるとありがたいです．  
よろしくお願いします．

4/15追記

コードについてですが，srcとsrc2が画像であると考えてもらうようにお願いします．  
具体的に何がしたいのかですが，  
○C++

[code]

    //src, src2はcv::Mat型
    for (int i = 0; i < 3, ++i){ 
        //ここの動作を3回繰り返す
        src = src - src2;
    }
    
[/code]

○Python

[code]

    #src,src2はnumpy.ndarray型
    for i in range(3):
        //ここの動作を3回繰り返す
        src = src - src2
    
[/code]

となっています．ヘッダ関係はopencv2(C++)とcv2,numpy(Python)です．  
また情報不足だと感じた部分があればお願いします．


CC BY-SA 4.0
2019-04-12T15:39:21.023
54128
2019-07-01T16:03:30.567
2019-04-15T03:24:07.960
31728
31728
question
python c++ opencv array
C++とPython　配列の計算結果について


同じ値に対して、２つのプログラムで演算(要素ごとの引き算)する過程を追って行って、プログラムによって違いが生じる直前の演算を特定しましょう。

その演算は同じ値に対して異なる値を返す訳ですから、どこかに差異があるはずです。


CC BY-SA 4.0
2019-04-13T06:58:30.147
54135
2019-04-13T06:58:30.147
217
54128
answer


自己解決しました。負の値の扱いが問題だったようで、  
例えば20から10を3回引くとして、C++では0とし、Pythonでは(255)-10で245のようにするのが原因でした。  
そこで、Pythonの演算結果に負の値があればそれを強制的に0に置換するような演算を組み込んだところ、C++の結果と一致しました。

色々とありがとうございました。


CC BY-SA 4.0
2019-05-30T09:12:01.673
55371
2019-05-30T09:12:01.673
31728
54128
answer