Max
此函数计算源图像指定区域内的最大像素值。在多通道图像情况下,最大值在每个通道上分别计算并存储在数组max中。
函数接口声明如下:
- 选择单通道最大像素值:
HmppResult HMPPI_Max_8u_C1R(const uint8_t *src, int32_t srcStep, HmppiSize roiSize, uint8_t *max);
HmppResult HMPPI_Max_16u_C1R(const uint16_t *src, int32_t srcStep, HmppiSize roiSize, uint16_t *max);
HmppResult HMPPI_Max_16s_C1R(const int16_t *src, int32_t srcStep, HmppiSize roiSize, int16_t *max);
HmppResult HMPPI_Max_32f_C1R(const float *src, int32_t srcStep, HmppiSize roiSize, float *max);
- 选择多通道最大像素值:
HmppResult HMPPI_Max_8u_C3R(const uint8_t *src, int32_t srcStep, HmppiSize roiSize, uint8_t max[3]);
HmppResult HMPPI_Max_16u_C3R(const uint16_t *src, int32_t srcStep, HmppiSize roiSize, uint16_t max[3]);
HmppResult HMPPI_Max_16s_C3R(const int16_t *src, int32_t srcStep, HmppiSize roiSize, int16_t max[3]);
HmppResult HMPPI_Max_32f_C3R(const float *src, int32_t srcStep, HmppiSize roiSize, float max[3]);
HmppResult HMPPI_Max_8u_AC4R(const uint8_t *src, int32_t srcStep, HmppiSize roiSize, uint8_t max[3]);
HmppResult HMPPI_Max_16u_AC4R(const uint16_t *src, int32_t srcStep, HmppiSize roiSize, uint16_t max[3]);
HmppResult HMPPI_Max_16s_AC4R(const int16_t *src, int32_t srcStep, HmppiSize roiSize, int16_t max[3]);
HmppResult HMPPI_Max_32f_AC4R(const float *src, int32_t srcStep, HmppiSize roiSize, float max[3]);
HmppResult HMPPI_Max_8u_C4R(const uint8_t *src, int32_t srcStep, HmppiSize roiSize, uint8_t max[4]);
HmppResult HMPPI_Max_16u_C4R(const uint16_t *src, int32_t srcStep, HmppiSize roiSize, uint16_t max[4]);
HmppResult HMPPI_Max_16s_C4R(const int16_t *src, int32_t srcStep, HmppiSize roiSize, int16_t max[4]);
HmppResult HMPPI_Max_32f_C4R(const float *src, int32_t srcStep, HmppiSize roiSize, float max[4]);
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
src |
指向源图像感兴趣区域的指针。 |
非空 |
输入 |
srcStep |
源图像中连续行起点之间的距离(以字节为单位)。 |
非负整数 |
输入 |
roiSize |
源和目标图像感兴趣区域的大小(以像素为单位)。 |
roiSize.width∈(0, INT_MAX],roiSize.height∈(0, INT_MAX] |
输入 |
max |
指向最大像素值的指针(用于单通道数据)。 |
非空 |
输入/输出 |
max[] |
指向最大像素值的数组(用于多通道数据)。 |
非空 |
输入/输出 |
返回值
- 成功:返回HMPP_STS_NO_ERR。
- 失败:返回错误码。
错误码
错误码 |
描述 |
---|---|
HMPP_STS_NULL_PTR_ERR |
src、max中存在空指针。 |
HMPP_STS_STEP_ERR |
srcStep小于或等于0。 |
HMPP_STS_ROI_ERR |
roiSize.width大于步长。 |
HMPP_STS_SIZE_ERR |
roiSize.width或roiSize.height小于或等于0。 |
HMPP_STS_NOT_EVEN_STEP_ERROR |
srcStep不能被src所属数据类型的字节长度整除。 |
示例
void MaxExample() { HmppiSize roi = {6, 6}; const float src[8*8] = {124.5, 913, 13453434, 57.5, 23.75, 63.375, 98.0625, 2343, 57.540001, 16.845346, 256.14001, 98.709999, 736.23999, 459.64999, 80.102997, 90.989998, 4013, 4238, 11940, 32200, 15709, 38807, 4239, 11942, 95345008, 25438044, 8.5345428e+09, 1.0534482e+08, 0.2, 0.23, 0.36000001, 0.56999999, 0.25001001, 0.87011999, 0.99010998, 0.54004002, 0.25999999, 0.33000001, 0.63, 0.75, 0.75001001, 0.90012002, 53450.691, 0.34004, 16411.25, 12293.375, 12779.5, 15498.062, 16411.211, 12293.377, 12779.52, 15498.062, 65519, 65520, 65519, 65520, 65504, 65504, 0.00013, 0.00013, 0, 1, 1, 3.4028235e+38}; float vMax; int32_t srcStep = 8 * sizeof(float); HmppResult result = HMPPI_Max_32f_C1R(src, srcStep, roi, &vMax); printf("result = %d \n vMax = ", result); if (result != HMPP_STS_NO_ERR) { printf("result error: %d\n", result); } printf("%f\n", vMax); return 0; } int main(void) { MaxExample(); return 0; }
运行结果:
result = 0 vMax = 8.5345428e+09