opencv误差乘以2 Mat的

2024-04-12

我在 opencv 中将 2 个矩阵(Mat 对象)相乘。

以下是第一个 Mat 的生成方式:

cv::Mat R(m, k, CV_8UC1);
rm.generateRandomMatrix(m, k, 255, R);

第二个是如何生成的:

for (int i=0; i<=n; i++)
{
    randomMatrix_Xi rm;
    cv::Mat Xi(k, 1, CV_8UC1);
    rm.generateRandomMatrix(k, 1, 255, Xi);
    random_Xi_Vectors.push_back(Xi);
    sleep(2);
}

这是我在两个地方使用的generateRandomMatrix()函数定义:

int randomMatrix_Xi::generateRandomMatrix(int m, int k, int range, cv::Mat R)
{
    typedef boost::mt19937 RNGType;
    RNGType rng(std::time(0));
    boost::uniform_int<> one_to_range( 1, range);
    boost::variate_generator< RNGType, boost::uniform_int<> > number_generator(rng, one_to_range);
    for (int j=0; j<k; j++)
    {
        for ( int i = 0; i < m; i++ ) 
        {
           int n = number_generator();
           R.at<uchar>(i,j) = n;
           //std::cout<<"Putting "<<n<<" at"<<i<<", "<<j<<std::endl;
        }
    }
}

最后,这是我进行两个 Mat 相乘的地方:

for (int i = 0; i < n; i++)
    {
        std::cout<<" Sizes of matrices to be multiplied: "<<std::endl;

        cv::Size Xi_size = random_Xi_Vectors[i].size();
        cv::Size A_size = R.size();
        std::cout<<"R : "<<A_size.height<<" "<<A_size.width<<std::endl;
        std::cout<<"Xi : "<<Xi_size.height<<" "<<Xi_size.width<<std::endl;

            cv::Mat temp(960,1, CV_8UC1); 
        cv::Mat temp = random_Xi_Vectors[i] * R;
        shares.push_back(temp);
    }

这是我收到的错误:

r@r-HP-Mini-110:~/l33t/Secret Sharing$ ./mainProgram  Sizes of matrices to be multiplied: 
R : 960 2
Xi : 2 1
OpenCV Error: Assertion failed (type == B.type() && (type == CV_32FC1 || type == CV_64FC1 || type == CV_32FC2 || type == CV_64FC2)) in gemm, file /build/buildd/opencv-2.3.1/modules/core/src/matmul.cpp, line 701
terminate called after throwing an instance of 'cv::Exception'
  what():  /build/buildd/opencv-2.3.1/modules/core/src/matmul.cpp:701: error: (-215) type == B.type() && (type == CV_32FC1 || type == CV_64FC1 || type == CV_32FC2 || type == CV_64FC2) in function gemm

Aborted (core dumped)
r@r-HP-Mini-110:~/l33t/Secret Sharing$ 

如您所见,第一个 Mat 中的列数与第二个 Mat 中的行数匹配。此外,两个 Mat 的类型相同,即CV_8UC1。那么为什么我会收到此错误。请帮忙。


(type == CV_32FC1 || type == CV_64FC1 || type == CV_32FC2 || type == CV_64FC2)

这清楚地表明,你只能乘以浮点 Mat 的

so use CV_32FC1(浮动)或CV_64FC1(双)垫子代替CV_8UC1

(代码如下:

boost::variate_generator<RNGType,boost::uniform_int<>> number_generator(rng,one_to_range);

可能也需要改变,不确定)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv误差乘以2 Mat的 的相关文章

随机推荐

  • Spring Batch 框架 - 自动创建批处理表

    我刚刚使用 Spring Batch 框架创建了一个批处理作业 但我没有运行 CREATE SQL 的数据库权限 当我尝试运行批处理作业时 框架尝试创建 TABLE BATCH INSTANCE 时遇到错误 我尝试禁用
  • 如何在 Julia 中提供可重现的样本数据

    Here on stackoverflow com 当我提供样本数据来制作可重现的示例时 我该如何以朱利安方式做到这一点 In R例如dput df 将输出一个字符串 您可以用它来创建df再次 因此 您只需将结果发布到 stackoverf
  • 当日期是日期时间且时间是字符串时,合并日期和时间

    我正在使用一个旧的 mysql 数据库 其中日期存储 没有时间 作为日期时间 时间存储为字符串 没有日期 在 C 中 我有一个 DateTime 其值类似于2010 06 25 12 00 00 AM和一个具有如下值的字符串15 02 在没
  • 禁用 Oracle 中所有作业的脚本(DBMS_JOB 包)?

    我正在寻找一个禁用所有作业的脚本 现在 我在 Toad 中将它们全部突出显示 单击脱机按钮 然后提交更改 在 PL SQL 中必须有一种方法来做到这一点 如果要阻止所有作业运行 可以更改初始化参数JOB QUEUE PROCESSES 如果
  • 避免在处理 config.properties 的 Java 类文件中使用静态方法和变量

    我正在开发一个简单的 Java 应用程序 并且创建了一个名为 Config java 的类来处理应用程序属性 从而避免硬编码 Config java 类不是静态类 我正在另一个名为 Serial java 的类中创建 Config java
  • 死信交换 RabbitMQ 丢弃消息

    我正在尝试在 RabbitMQ 中实现 dlx 队列 场景很简单 我有 2 个队列 1 活着 2 死亡 x dead letter exchange 立即 x message ttl 5000 以及 立即 交换 这必然是 1 活着 我尝试运
  • 当终端大小调整时,Ncurses 程序退出

    当我调整终端窗口大小时 以下程序退出 为什么以及如何阻止它 include
  • 如何在java程序中获取kafka消耗滞后

    我写了一个java程序来消费来自kafka的消息 我想监控消费延迟 如何通过java获取它 顺便说一句 我用
  • Java如何检测文件变化

    有没有办法以某种方式触发一个事件 每次文件更改时都会执行某些操作 我的意思是类似的东西 用伪代码 if DetectedFileModified pathToFile do stuff 我知道我可以定期执行此操作 但我可以在没有计时器的情况
  • PHP Imagick如何最适合文本注释

    我正在将注释文本添加到 newPseudoImage 中 该图像工作正常 但我想让文本缩放以适应图像大小 我有什么想法可以做到这一点吗 im new Imagick draw new ImagickDraw draw gt setFillC
  • 请告诉我如何打开4d数据库?

    我尝试打开 使用 4d v12 扩展名为 4dc 的数据库 此外还有扩展名为 4dd 和 4dr 的文件 结果是错误 您无法转换已编译的数据库 也许这是数据库的旧版本 但我找不到任何可以将其转换为新版本的内容 我的目标是从数据库中获取信息
  • Android 应用无法获取位置权限

    我的清单中有以下内容
  • 哪种 Java 集合认为排列是相等的?

    我想创建可能包含重复值的集合 没有特定的顺序 换句话说 1 1 2 2 1 1 1 2 1 事实上 我想要一组这些集合 所以如果我尝试添加这两个集合 1 1 2 and 2 1 1 第二 add 实际上不会做任何事情 是否有一个标准集合已经
  • 按最高值对字典进行排序? [复制]

    这个问题在这里已经有答案了 我有一个带有字符串键和整数值的字典 有什么方法可以获取这个字典并使用它来获取从最高值到最低值的键列表 Example gt gt gt myDict seven 7 four 4 one 1 two 2 five
  • 无法绑定到“routerLink”,因为它不是“a”的已知属性[重复]

    这个问题在这里已经有答案了 我正在将我们的一个应用程序从 rc4 更新到 angular2 0 0 但在运行时出现模板解析错误 这是我的视图模板 div class col xs 3 quick link a div class tile
  • 为什么打印 int[] 时会得到垃圾输出?

    我的程序应该计算文件中每个字符的出现次数 忽略大小写 我写的方法是 public int getCharTimes File textFile throws FileNotFoundException Scanner inFile new
  • HBase Java 客户端 - 未知主机:localhost.localdomain

    版本 Hadoop 2 0 0 cdh4 3 1 HBase 0 94 6 cdh4 3 1 我正在运行cloudera快速启动vm 一切都在172 16 144 150上运行 这是我的小HBase Java客户端 HbaseClient
  • C 链接错误:未定义对“main”的引用

    我试图将多个 C 程序链接在一起 但收到错误响应 gcc o runexp o scd o data proc o lm fopenmp usr lib gcc x86 64 linux gnu 4 6 x86 64 linux gnu c
  • MySQL 错误代码:1005

    我正在尝试将外键添加到我的表中 但收到此错误 错误代码 1005 无法创建表 william sql 88c 3 errno 150 我有3张桌子 员工 客户和合同 员工 employee no PK 客户 customer id PK 合
  • opencv误差乘以2 Mat的

    我在 opencv 中将 2 个矩阵 Mat 对象 相乘 以下是第一个 Mat 的生成方式 cv Mat R m k CV 8UC1 rm generateRandomMatrix m k 255 R 第二个是如何生成的 for int i