OpenPose C++实现多人姿态估计

smoothProbMap.mul 执行了什么操作?

flyfish

cv::minMaxLoc(smoothProbMap.mul(blobMask),0,&maxVal,0,&maxLoc);

解释
MatExpr cv::Mat::mul ( InputArray m,double scale = 1) const

Performs an element-wise multiplication or division of the two matrices.
The method returns a temporary object encoding per-element array multiplication, with optional scale.
Note that this is not a matrix multiplication that corresponds to a simpler “*” operator.

执行两个矩阵的逐元素乘法或除法。
该方法返回编码每个元素数组乘法的临时对象,具有可选的小数位数位数。请注意,这不是与更简单的“*”运算符相对应的矩阵乘法。

假设有两个矩阵
A = [ a 00 a 01 a 10 a 11 ] B = [ b 00 b 01 b 10 b 11 ] A=\left[\begin{array}{ll}{a_{00}} & {a_{01}} \\ {a_{10}} & {a_{11}}\end{array}\right] \quad B=\left[\begin{array}{ll}{b_{00}} & {b_{01}} \\ {b_{10}} & {b_{11}}\end{array}\right] A=[a00a10a01a11]B=[b00b10b01b11]

执行cv::Mat::mul的过程就是
A ⋅ mul ⁡ ( B ) = [ a 00 × b 00 a 01 × b 01 a 10 × b 10 a 11 × b 11 ] A \cdot \operatorname{mul}(B)=\left[\begin{array}{ll}{a_{00} \times b_{00}} & {a_{01} \times b_{01}} \\ {a_{10} \times b_{10}} & {a_{11} \times b_{11}}\end{array}\right] Amul(B)=[a00×b00a10×b10a01×b01a11×b11]
不是矩阵乘法
这里的A就是smoothProbMap,B就是blobMask

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐