如果我有一個矩陣OpenCV:在範圍(0,1)中乘以常數乘以矩陣。數據如何處理?
cv :: Mat M;
並將其乘以常數
double c;
使用
result = c * A;
其中c在0和1之間
數據如何處理?我明白數據是uchar。如果像素值是26並且c = 0.2,那麼結果是 截斷(26 * 0.2)= 5?
非常感謝, 彼得。
如果我有一個矩陣OpenCV:在範圍(0,1)中乘以常數乘以矩陣。數據如何處理?
cv :: Mat M;
並將其乘以常數
double c;
使用
result = c * A;
其中c在0和1之間
數據如何處理?我明白數據是uchar。如果像素值是26並且c = 0.2,那麼結果是 截斷(26 * 0.2)= 5?
非常感謝, 彼得。
1)數據不一定具有uchar類型。
2.)Yes.You可以自己
cv::Mat m = cv::Mat::ones(3 , 1, cv::DataType<unsigned char>::type);
double c = 0.2;
m.at<unsigned char>(0 , 0) = 26;
m.at<unsigned char>(1 , 0) = 27;
m.at<unsigned char>(1 , 0) = 28;
cv::Mat res = c * m;
cout << "res = "<< endl << " " << res << endl << endl;
在爲cvDiv評論,我發現以下幾點:
/* element-wise division/inversion with scaling:
dst(idx) = src1(idx) * scale/src2(idx)
or dst(idx) = scale/src2(idx) if src1 == 0 */
CVAPI(void) cvDiv(const CvArr* src1, const CvArr* src2,
CvArr* dst, double scale CV_DEFAULT(1));
也許您可以使用「scale」參數作爲常量並將src1指定爲0.