0

1 に等しい値を含む行列を宣言しました: cv::Mat mat_cal = cv::Mat::ones(width, height, CV_8U);

ここで、定数を掛けたいと思います。つまり、値が A=0.3 に等しい 1 つの行列です。次に、次のように書きました。 cv::Mat mat_cal = cv::Mat::ones(width, height, CV_8U)*A ;

でも、結果?0 0 0 0 0 0 0 0の行列

解決策はありますか?

4

2 に答える 2

1

問題の一部は、行列の型がCV_8U8 ビットの符号なし整数である0.3こと0です。代わりにCV_32F(32 ビット浮動小数点) に設定します。

また、スカラーを掛ける場合は、覚えていれば以下のようにします。2 つの行列の乗算は同じようには機能しません。

float A = 0.3;
cv::Mat mat_cal = cv::Mat::ones(width, height, CV_32F)*A;
于 2013-03-15T11:38:54.097 に答える
0
char i = 1;
i *= 0.3;

結果 ?0

それは単なる古い整数の丸めです。

double または float 値を持つ Mat が必要な場合は、最初に正しい型を使用します。

cv::Mat::ones(width, height, CV_32F)*0.3f; // float

また:

cv::Mat::ones(width, height, CV_64F)*0.3;  // double
于 2013-03-15T11:38:35.963 に答える