如何用相同的矩阵分别乘以每个通道
How to multiply each channel separately with same matrix?
我有一个相同大小的1通道和3通道Mat
s,称它们为a
和img
。我想用a
乘以img
的每个通道。我还会做很多次,性能是个问题。
是否有一种方法使用multiply()
操作或乘法运算符重载从OpenCV的优化中受益?出于性能原因,我尽量避免编写自己的循环,使用操作符也会导致更干净的代码。
由于性能问题,我不想将a
重复三次,将merge()
重复到单个3通道的Mat
中。
是否有一种方法使用乘法()操作或乘法运算符重载从OpenCV的优化中受益?
OpenCV3推送使用cv::UMat
类来代替cv::Mat
。这将在可能的情况下给你一点GPU加速。
出于性能原因,我尽量避免编写自己的循环,使用操作符也会导致更干净的代码。
我不同意,performance reasons
可能是错误的,因为你将依赖于用于构建库的任何编译。如果库没有AVX2,您将失去性能。此外,您将被限制在OpenCV的原语,这大大增加了内存访问。具体来说,每次执行cv::add(A,B,C)
和cv::sqrt(C,C)
之类的操作时,都会额外占用内存一段时间,从而导致显著的性能下降。
它也绝对不是更干净的代码,更像是为旧的波兰符号计算器编写脚本。
总之,如果你有性能问题抓住.data()
指针,检查它是否矢量化,并在c++/CUDA/OCL中做你的工作。
相关文章:
- 如何用数字处理log(0)
- 如何用转义符替换字符串中的所有特殊字符
- 如何用参数值调用函数(仅在运行时已知)
- 如何用RISC-V GD32VF103CBT6开发板卸载精确的ADC过采样
- 如何用for循环在c++中生成单词三角形
- 如何用C++编写BFS函数
- 当对话框被接受时,如何用参数调用槽
- 我不明白这段代码是如何对这个pythonlist()进行排序的,也不明白如何用C++中的向量来重现它
- 在AVX通道中混洗的最佳方式
- 在Arduino中将PWM通道命名为LEDC是否有特定原因
- 如何用前导零填充数组?
- 如何在 OpenCV 中将图像与另一个图像相关联
- 如何用 2 个对象过度引导运算符
- 如何用C / C++编写钢琴程序
- C++:如何用单个命令替换复杂的迭代?
- 将正态随机变量与任意 RHO(corrcoef) 相关联
- 在 C++ 中,将 2 个长值相除会产生错误的输出
- 如何用三个通道初始化垫子
- 如何用相同的矩阵分别乘以每个通道
- 如何用alpha通道检测标记