OpenCVにて行列と行の演算メソッドを教えてください。
現在はV342を使用してポインタ演算にて処理を行っていますが、処理高速化の為OpenCVでのメソッドを探しています。
行列のbaseMat(CV_8U)の各行にオーバーフローを起こさないように行revisionMat(CV_32F)をかけ合わせたいです。
最も近いのがMat::mul()ですがサイズ不一致で使用できません。
newMat = baseMat.mul(ravisionMat);
領域分割や同サイズのrevisionMat等を使用するのではなく、すっきり数行程度で記述する方法は無いでしょうか?
html
1//補正 2PBYTE inData = baseMat.data; 3PBYTE outData = newMat.data; 4for (int y = 0; y < baseMat.rows; y++) 5{ 6 PFLOAT fData = (PFLOAT)revisionMat.data; 7 for (int x = 0; x < baseMat.cols; x++) 8 { 9 int ans = (int)((float)*(inData++) * *(fData++)); 10 if (0xff < ans) 11 ans = 0xff; 12 else if (ans < 0) 13 ans = 0; 14 *(outData++) = ans; 15 } 16} 17
説明が分かりづらくすみません。
具体的には下記、行列と行の要素同士の積が得たいです。
行列
[154, 201, 172 ;
164, 192, 168;
156, 198, 172]
行
[1.26, 1,01; 1.17]
結果行列
[194, 204, 201;
207, 194, 196;
197, 201, 201]
回答2件
あなたの回答
tips
プレビュー