我通过C ++接口使用opencv。我知道我可以使用cv::Mat::operator=(const Scalar& s)
或cv::Mat::setTo()
将cv::Mat
设置为特定值。但是,如何将cv::Mat
作为参数传递给我的函数到其最大可能值?
答案 0 :(得分:4)
首先,它取决于矩阵的类型,8UC1是8位无符号字符,最大值是255.如果我正确调用,32SC1的最大值是最大整数值,最大64FC1是最大双倍值。
通常我会做这样的事情。
/* Test with small matrix */
cv::Mat matrix_1( 2, 2, CV_32FC3, Scalar::all( std::numeric_limits<float>::max() ) );
/* Subsequent assigment is something like this */
matrix_1 = Scalar::all( std::numeric_limits<float>::max() );
cout << matrix_1 << endl;
/* Test with integer matrix */
cv::Mat matrix_2( 2, 2, CV_32SC2, Scalar::all( std::numeric_limits<int>::max() ) );
/* Subsequent assigment is something like this */
matrix_2 = Scalar::all( std::numeric_limits<int>::max() );
cout << matrix_2 << endl;
如果它是8UC类型,那么只需使用255,如果是64FC类型,则使用double类型。