ikuida 2022-04-17 16:17 采纳率: 100%
浏览 43
已结题

请问如何用mat实现add,sub,multiply函数

问题遇到的现象和发生背景

已有部分代码,只需补充后运行

问题相关代码,请勿粘贴截图

#ifndef MATRIX
#define MATRIX
#include
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

class Matrix
{
public:
Matrix(cv::Mat mat)
: obj_(mat)
{}

Matrix add(const Matrix& m);

Matrix sub(const Matrix& m);

Matrix multiply(const Matrix& m);

Matrix& operator=(const Matrix& m);

void print() {
    std::cout << obj_ << std::endl;
};

private:
cv::Mat obj_;
};

Matrix Matrix::add(const Matrix& m)
{

}

Matrix Matrix::sub(const Matrix& m)
{

}

Matrix Matrix::multiply(const Matrix& m)
{

}

Matrix& Matrix::operator=(const Matrix& m)
{
obj_.release();
obj_ = m.obj_.clone();

return *this;

}

#endif // MATRIX

int main(int argc, char* argv[])
{
cv::Mat m1 = (cv::Mat_(3, 3) << -1, 0, 1, -2, 0, 2, -1, 0, 1);
cv::Mat m2 = (cv::Mat_(3, 3) << -1, -2, -1, 0, 0, 0, 1, 2, 1);
Matrix x(m1), y(m2);

Matrix a = x.add(y);
a.print();

Matrix b = x.sub(y);
b.print();

Matrix c = x.multiply(y);
c.print();

return 0;

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

3条回答 默认 最新

  • 爱晚乏客游 2022-04-17 22:29
    关注

    直接用加减乘除符号就行,Mat类中已经重载了这些运算符,不过要注意在opencv中Mat的*和Mat.dot()和Mat.mul()的区别,

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义