【发布时间】:2014-03-07 08:46:33
【问题描述】:
我最近开始使用 OpenCV 处理图像。
据我所知,cv::max(input1, input2, output) 用于查找 2 张图像的最大 BGR 值。我想在一个颜色通道内最大化,请参阅以下示例以获取 2 个 BGR 垫(垫尺寸 2x2):
input1= [110, 100, 90, 109, 99, 89;
111, 99, 89, 108, 98, 88]
inout2= [97, 141, 158, 95, 138, 157;
98, 149, 169, 97, 148, 168]
我只想最大化蓝色通道中的值,因此我会将绿色和红色通道的任何值带到我的输出垫;因此我希望结果是这样的:
output= [110, 100, 90, 109, 99, 89;
111, 99, 89, 108, 98, 88]
是的,它恰好是输出 mat 成为 input1 的副本,但请注意运行
cv::max(input1, input2, output);
给了
output= [110, 141, 158, 109, 138, 157;
111, 149, 169, 108, 148, 168]
它以某种方式混合了 2 个垫子通道。
抱歉写了这么长;我只是想清楚一点。谢谢,,,
更新:我已经使用 C++ for 循环实现了一个解决方案。老实说,它们可以工作,但我正在寻找更快、更简单的东西,如果有的话。
UPDATE2:从 2 个输入图像中,我需要来自蓝色通道的最大值,并将其与相关的绿色和红色值一起存储到输出中。
【问题讨论】:
标签: c++ arrays opencv comparison mat