【问题标题】:OpenCV Rect x and y represent (column,row) or (row,column)OpenCV Rect x 和 y 表示 (column,row) 或 (row,column)
【发布时间】:2018-01-31 22:35:26
【问题描述】:

我想用 0 值替换图像 (Mat) 的矩形部分。我的图像有 1000 行和 1500 列。我想在 (890,1340) 处遮盖宽度为 150 和高度为 100 的补丁。为此,我使用以下代码 sn-p:

cv::Rect patch;
patch.y = 890;
patch.x = 1340;
patch.height = 100;
patch.width = 150;
image(patch) = 0;

但我收到以下错误:

OpenCV 错误:输入参数的大小不匹配(该操作既不是“数组运算数组”(其中数组具有相同的大小和相同的通道数),也不是“数组运算标量”,也不是“标量运算数组” ') 在 cv::arithm_op,文件 C:\build\master_winpack-build-win64-vc14\opencv\modules\core\src\arithm.cpp,第 659 行

我更改了 Rect 补丁的 x 和 y 坐标,但仍然出现相同的错误。我在网上搜索过,但我仍然对 Rect 参数感到困惑。

Rect x,y是代表(column,row)还是(row,column)?

【问题讨论】:

  • x 是列,y 是行....您应该展示如何创建图像以了解错误的含义
  • 图像(补丁).setTo(cv::Scalar(0));
  • 谢谢@Miki,它使用提到的命令工作。

标签: c++ opencv mat rect


【解决方案1】:

Rect x 代表列,y 代表行。这意味着 image.at(i,j) 使用 (i,j) 作为 (row,column) 但 Rect(x,y) 使用 (x,y) 作为 (column,row)。

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2014-07-26
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多