c++ - OpenCV Rect x和y代表(column,row)或(row,column)

标签 c++ opencv mat rect

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

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

但我收到以下错误:

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

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

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

最佳答案

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

关于c++ - OpenCV Rect x和y代表(column,row)或(row,column),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837984/

相关文章:

c++ - Cv::Mat CvType 在返回时改变

android - onpreviewcallback字节数组以匹配opencv

c++ - 使用 JSON Spirit 进行 pretty-print

opencv - HOG 特征描述符训练如何工作?

C++ 连接函数错误 - 参数无效

opencv - 如何检索 cvPoint 值以进行进一步处理?

c++ - OpenCV 中 Mat 等结构的内存分配

c++ - cv::Mat到QImage然后返回

c++ - 如果我使用共享内存,可以分配多少 block ?

c++ - C++ 中是否有任何方法允许不同数据类型的不同执行路径?