如果我有一个矩阵
cv :: Mat M;
并将其乘以常数
双c;
使用
结果= C * A;
其中c介于0和1之间
如何处理数据?我知道数据是uchar。如果像素值为26且c = 0.2,则结果为 截断(26 * 0.2)= 5?
非常感谢, 彼得。
答案 0 :(得分:1)
1。)数据不一定具有uchar类型 2.)是的。你可以自己检查一下
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;
答案 1 :(得分:0)
答案 2 :(得分:0)
在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。