opencv 将cv::Mat设置为其最大可能值

7cjasjjr  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(217)

我正在通过C++接口使用opencv。我知道我可以使用cv::Mat::operator=(const Scalar& s)cv::Mat::setTo()cv::Mat设置为特定值。但我如何将作为参数传递给我的函数的cv::Mat设置为它的最大可能值?

wnvonmuf

wnvonmuf1#

首先,这取决于你的矩阵是什么类型,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型。

vhmi4jdf

vhmi4jdf2#

派对迟到太久了,但不管怎样:
我只是尝试解决完全相同的问题,并使用elemSize1()工作。
cv::pow(2, 8*src->elemSize1())-1给出给定cv::Mat的最大灰度值。

相关问题