OpenCV:将矩阵乘以范围(0,1)内的常数。如何处理数据?
如果我有一个矩阵 cv::Mat M 然后乘以一个常数 双c 使用 结果=c*A 其中c在0和1之间 数据是如何处理的?据我所知,这些数据是uchar提供的。如果像素值为26且c=0.2,结果是否为 截断(26*0.2)=5 多谢各位, Peter.1.)数据不一定具有uchar类型。OpenCV:将矩阵乘以范围(0,1)内的常数。如何处理数据?,opencv,matrix,floating-point,char,constants,Opencv,Matrix,Floating Point,Char,Constants,如果我有一个矩阵 cv::Mat M 然后乘以一个常数 双c 使用 结果=c*A 其中c在0和1之间 数据是如何处理的?据我所知,这些数据是uchar提供的。如果像素值为26且c=0.2,结果是否为 截断(26*0.2)=5 多谢各位, Peter.1.)数据不一定具有uchar类型。 是的,你可以自己检查一下 cv::Mat m = cv::Mat::ones(3 , 1, cv::DataType<unsigned char>::type); double c = 0.2; m.
是的,你可以自己检查一下
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;
cv::Mat m=cv::Mat::ones(3,1,cv::DataType::type);
双c=0.2;
m、 at(0,0)=26;
m、 at(1,0)=27;
m、 at(1,0)=28;
cv::Mat res=c*m;
cout1.)数据不一定具有uchar类型。
是的,你可以自己检查一下
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;
cv::Mat m=cv::Mat::ones(3,1,cv::DataType::type);
双c=0.2;
m、 at(0,0)=26;
m、 at(1,0)=27;
m、 at(1,0)=28;
cv::Mat res=c*m;
cout根据OpenCV,数据被转换为double,对其执行所需的操作,然后转换为目标类型:
dst = (dst_type)((double)src*a+b);
其中a和b是双常量,根据OpenCV,数据转换为双常量,对其执行所需的操作,然后转换为目标类型:
dst = (dst_type)((double)src*a+b);
其中a和b是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。在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