![]() |
OpenCV 4.11.0
开源计算机视觉库
|
函数 | |
| void | cv::cann::add (const AscendMat &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::add (const AscendMat &src1, const Scalar &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::add (const InputArray src1, const InputArray src2, OutputArray dst, const InputArray mask=noArray(), int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| 计算矩阵-矩阵或矩阵-标量的和。 | |
| void | cv::cann::add (const Scalar &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::addWeighted (const AscendMat &src1, double alpha, const AscendMat &src2, double beta, double gamma, AscendMat &dst, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::addWeighted (const InputArray src1, double alpha, const InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| 计算两个数组的加权和。 | |
| void | cv::cann::bitwise_and (const AscendMat &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_and (const AscendMat &src1, const Scalar &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_and (const InputArray src1, const InputArray src2, OutputArray dst, const InputArray mask=noArray(), AscendStream &stream=AscendStream::Null()) |
| 执行两个矩阵(或矩阵和标量)的逐元素按位与运算。 | |
| void | cv::cann::bitwise_and (const Scalar &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_not (const AscendMat &src, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_not (const InputArray src, OutputArray dst, const InputArray mask=noArray(), AscendStream &stream=AscendStream::Null()) |
| 执行逐元素按位非运算。 | |
| void | cv::cann::bitwise_or (const AscendMat &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_or (const AscendMat &src1, const Scalar &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_or (const InputArray src1, const InputArray src2, OutputArray dst, const InputArray mask=noArray(), AscendStream &stream=AscendStream::Null()) |
| 对两个矩阵(或矩阵和标量)执行逐元素按位或运算。 | |
| void | cv::cann::bitwise_or (const Scalar &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_xor (const AscendMat &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_xor (const AscendMat &src1, const Scalar &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::bitwise_xor (const InputArray src1, const InputArray src2, OutputArray dst, const InputArray mask=noArray(), AscendStream &stream=AscendStream::Null()) |
| 对两个矩阵(或矩阵和标量)执行逐元素按位异或运算。 | |
| void | cv::cann::bitwise_xor (const Scalar &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::divide (const AscendMat &src1, const AscendMat &src2, AscendMat &dst, float scale=1, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::divide (const AscendMat &src1, const Scalar &src2, AscendMat &dst, float scale=1, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::divide (const InputArray src1, const InputArray src2, OutputArray dst, float scale=1, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| 计算矩阵-矩阵或矩阵-标量的除法。 | |
| void | cv::cann::divide (const Scalar &src1, const AscendMat &src2, AscendMat &dst, float scale=1, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::multiply (const AscendMat &src1, const AscendMat &src2, AscendMat &dst, float scale=1, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::multiply (const AscendMat &src1, const Scalar &src2, AscendMat &dst, float scale=1, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::multiply (const InputArray src1, const InputArray src2, OutputArray dst, float scale=1, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| 计算矩阵-矩阵或矩阵-标量的逐元素乘积。 | |
| void | cv::cann::multiply (const Scalar &src1, const AscendMat &src2, AscendMat &dst, float scale=1, int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::subtract (const AscendMat &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::subtract (const AscendMat &src1, const Scalar &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| void | cv::cann::subtract (const InputArray src1, const InputArray src2, OutputArray dst, const InputArray mask=noArray(), int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| 计算矩阵与矩阵或矩阵与标量的差。 | |
| void | cv::cann::subtract (const Scalar &src1, const AscendMat &src2, AscendMat &dst, const AscendMat &mask=AscendMat(), int dtype=-1, AscendStream &stream=AscendStream::Null()) |
| double | cv::cann::threshold (const AscendMat &src, AscendMat &dst, double thresh, double maxval, int type, AscendStream &stream=AscendStream::Null()) |
| double | cv::cann::threshold (const InputArray src, OutputArray dst, double thresh, double maxval, int type, AscendStream &stream=AscendStream::Null()) |
| 对每个数组元素应用固定级别的阈值。 | |
| void cv::cann::add | ( | const AscendMat & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::add | ( | const AscendMat & | src1, |
| const Scalar & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::add | ( | const InputArray | src1, |
| const InputArray | src2, | ||
| OutputArray | dst, | ||
| const InputArray | mask = noArray(), | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
计算矩阵-矩阵或矩阵-标量的和。
| src1 | 第一个源矩阵或标量。 |
| src2 | 第二个源矩阵或标量。矩阵应与src1具有相同的大小和类型。 |
| dst | 目标矩阵,其大小和通道数与输入数组相同。深度由dtype或src1深度定义。 |
| mask | 可选的操作掩码,8位单通道数组,指定要更改的目标数组的元素。掩码只能与单通道图像一起使用。 |
| dtype | 输出数组的可选深度。 |
| stream | 异步版本的AscendStream。 |
| void cv::cann::add | ( | const Scalar & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::addWeighted | ( | const AscendMat & | src1, |
| double | alpha, | ||
| const AscendMat & | src2, | ||
| double | beta, | ||
| double | gamma, | ||
| AscendMat & | dst, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::addWeighted | ( | const InputArray | src1, |
| double | alpha, | ||
| const InputArray | src2, | ||
| double | beta, | ||
| double | gamma, | ||
| OutputArray | dst, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
计算两个数组的加权和。
| src1 | 第一个源数组。 |
| alpha | 第一个数组元素的权重。 |
| src2 | 第二个源数组,大小和通道数与src1相同。 |
| beta | 第二个数组元素的权重。 |
| dst | 目标数组,其大小和通道数与输入数组相同。 |
| gamma | 添加到每个总和的标量。 |
| dtype | 目标数组的可选深度。当两个输入数组具有相同的深度时,dtype可以设置为-1,这将等效于src1.depth()。 |
| stream | 异步版本的流。 |
该函数addWeighted计算两个数组的加权和,如下所示
\[\texttt{dst} (I)= \texttt{saturate} ( \texttt{src1} (I)* \texttt{alpha} + \texttt{src2} (I)* \texttt{beta} + \texttt{gamma} )\]
其中I是数组元素的多维索引。对于多通道数组,每个通道都独立处理。
| void cv::cann::bitwise_and | ( | const AscendMat & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
| void cv::cann::bitwise_and | ( | const AscendMat & | src1, |
| const Scalar & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::bitwise_and | ( | const InputArray | src1, |
| const InputArray | src2, | ||
| OutputArray | dst, | ||
| const InputArray | mask = noArray(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
执行两个矩阵(或矩阵和标量)的逐元素按位与运算。
| src1 | 第一个源矩阵或标量。 |
| src2 | 第二个源矩阵或标量。 |
| dst | 目标矩阵,其大小和通道数与输入数组相同。深度由dtype或src1深度定义。 |
| mask | 可选的操作掩码,8位单通道数组,指定要更改的目标数组的元素。掩码只能与单通道图像一起使用。 |
| stream | 异步版本的AscendStream。 |
| void cv::cann::bitwise_and | ( | const Scalar & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::bitwise_not | ( | const AscendMat & | src, |
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::bitwise_not | ( | const InputArray | src, |
| OutputArray | dst, | ||
| const InputArray | mask = noArray(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
执行逐元素按位非运算。
| src | 第一个源矩阵。 |
| dst | 目标矩阵,其大小和通道数与输入数组相同。深度由dtype或src1深度定义。 |
| mask | 可选的操作掩码,8位单通道数组,指定要更改的目标数组的元素。掩码只能与单通道图像一起使用。 |
| stream | 异步版本的AscendStream。 |
| void cv::cann::bitwise_or | ( | const AscendMat & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
| void cv::cann::bitwise_or | ( | const AscendMat & | src1, |
| const Scalar & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::bitwise_or | ( | const InputArray | src1, |
| const InputArray | src2, | ||
| OutputArray | dst, | ||
| const InputArray | mask = noArray(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
对两个矩阵(或矩阵和标量)执行逐元素按位或运算。
| src1 | 第一个源矩阵或标量。 |
| src2 | 第二个源矩阵或标量。 |
| dst | 目标矩阵,其大小和通道数与输入数组相同。深度由dtype或src1深度定义。 |
| mask | 可选的操作掩码,8位单通道数组,指定要更改的目标数组的元素。掩码只能与单通道图像一起使用。 |
| stream | 异步版本的AscendStream。 |
| void cv::cann::bitwise_or | ( | const Scalar & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::bitwise_xor | ( | const AscendMat & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
| void cv::cann::bitwise_xor | ( | const AscendMat & | src1, |
| const Scalar & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::bitwise_xor | ( | const InputArray | src1, |
| const InputArray | src2, | ||
| OutputArray | dst, | ||
| const InputArray | mask = noArray(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
对两个矩阵(或矩阵和标量)执行逐元素按位异或运算。
| src1 | 第一个源矩阵或标量。 |
| src2 | 第二个源矩阵或标量。 |
| dst | 目标矩阵,其大小和通道数与输入数组相同。深度由dtype或src1深度定义。 |
| mask | 可选的操作掩码,8位单通道数组,指定要更改的目标数组的元素。掩码只能与单通道图像一起使用。 |
| stream | 异步版本的AscendStream。 |
| void cv::cann::bitwise_xor | ( | const Scalar & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::divide | ( | const AscendMat & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| float | scale = 1, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
| void cv::cann::divide | ( | const AscendMat & | src1, |
| const Scalar & | src2, | ||
| AscendMat & | dst, | ||
| float | scale = 1, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::divide | ( | const InputArray | src1, |
| const InputArray | src2, | ||
| OutputArray | dst, | ||
| float | scale = 1, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
计算矩阵-矩阵或矩阵-标量的除法。
| src1 | 第一个源矩阵或标量。 |
| src2 | 第二个源矩阵或标量。矩阵应与src1具有相同的大小和类型。 |
| dst | 目标矩阵,其大小和通道数与输入数组相同。深度由dtype或src1深度定义。 |
| scale | 可选比例因子。 |
| dtype | 输出数组的可选深度。 |
| stream | 异步版本的AscendStream。 |
| void cv::cann::divide | ( | const Scalar & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| float | scale = 1, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::multiply | ( | const AscendMat & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| float | scale = 1, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::multiply | ( | const AscendMat & | src1, |
| const Scalar & | src2, | ||
| AscendMat & | dst, | ||
| float | scale = 1, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::multiply | ( | const InputArray | src1, |
| const InputArray | src2, | ||
| OutputArray | dst, | ||
| float | scale = 1, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
计算矩阵-矩阵或矩阵-标量的逐元素乘积。
| src1 | 第一个源矩阵或标量。 |
| src2 | 第二个源矩阵或标量。矩阵应与src1具有相同的大小和类型。 |
| dst | 目标矩阵,其大小和通道数与输入数组相同。深度由dtype或src1深度定义。 |
| scale | 可选比例因子。 |
| dtype | 输出数组的可选深度。 |
| stream | 异步版本的AscendStream。 |
| void cv::cann::multiply | ( | const Scalar & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| float | scale = 1, | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::subtract | ( | const AscendMat & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::subtract | ( | const AscendMat & | src1, |
| const Scalar & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| void cv::cann::subtract | ( | const InputArray | src1, |
| const InputArray | src2, | ||
| OutputArray | dst, | ||
| const InputArray | mask = noArray(), | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
计算矩阵与矩阵或矩阵与标量的差。
| src1 | 第一个源矩阵或标量。 |
| src2 | 第二个源矩阵或标量。矩阵应与src1具有相同的大小和类型。 |
| dst | 目标矩阵,其大小和通道数与输入数组相同。深度由dtype或src1深度定义。 |
| mask | 可选的操作掩码,8位单通道数组,指定要更改的目标数组的元素。掩码只能与单通道图像一起使用。 |
| dtype | 输出数组的可选深度。 |
| stream | 异步版本的AscendStream。 |
| void cv::cann::subtract | ( | const Scalar & | src1, |
| const AscendMat & | src2, | ||
| AscendMat & | dst, | ||
| const AscendMat & | mask = AscendMat(), | ||
| int | dtype = -1, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| double cv::cann::threshold | ( | const AscendMat & | src, |
| AscendMat & | dst, | ||
| double | thresh, | ||
| double | maxval, | ||
| int | type, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数只在它接受的参数上有所不同。
| double cv::cann::threshold | ( | const InputArray | src, |
| OutputArray | dst, | ||
| double | thresh, | ||
| double | maxval, | ||
| int | type, | ||
| AscendStream & | stream = AscendStream::Null() ) |
#include <opencv2/cann_interface.hpp>
对每个数组元素应用固定级别的阈值。
| src | 源数组(单通道)。 |
| dst | 与 src 大小和类型相同的目标数组。 |
| thresh | 阈值。 |
| maxval | 与 THRESH_BINARY 和 THRESH_BINARY_INV 阈值类型一起使用的最大值。 |
| type | 阈值类型。详情请参见 threshold。不支持 THRESH_MASK、THRESH_OTSU 和 THRESH_TRIANGLE 阈值类型。 |
| stream | 异步版本的AscendStream。 |