【问题标题】:C++; How to write to an Vect3b pointer of opencv in a functionC++;如何在函数中写入opencv的Vect3b指针
【发布时间】:2020-05-01 03:14:46
【问题描述】:

我有一个小问题。我有一个函数,它使用了一个给定 2 个 Mat 指针对象的函数,但我无法写入 outImg 通道来更新 img。

void convolve5(Mat *inputImg, Mat *outImg, int *kernel5) {
     int channelvaluepixel = inputImg->at<Vect3b>(x,y)[channel];
     // loads of changes happening here
     outImg->at<Vect3b>(x,y)[0] = channelvaluepixel;
}

由于 outImg 是一个指针,我无法指向它的地址来更改它,所以我尝试这样做来更改指针内的值:

*outImg->at<Vect3b>(x,y)[0] = channelvaluepixel;

但这也行不通,因为编译器给了我一个:

Error: invalid type argument of unary '*' (have 'unsigned char')

有人可以帮忙吗?

【问题讨论】:

  • 您正在取消引用整个表达式 outImg-&gt;at&lt;Vect3b&gt;(x,y)[0] 而不仅仅是 (*outImg).at&lt;Vect3b&gt;(x,y)[0] = channelvaluepixel;
  • 无法复制;原始代码,即outImg-&gt;at&lt;Vec3b&gt;(x,y)[0],适用于我(Windows 10、Visual Studio Prof. 2017、OpenCV 4.0.0)。
  • > 由于 outImg 是一个指针,我不能指向它的地址来更改它 我想你可能对成员访问运算符有一些误解 (-&gt;)

标签: c++ function opencv pointers vector


【解决方案1】:

您正在取消引用整个表达式 outImg-&gt;at&lt;Vect3b&gt;(x,y)[0] 而不仅仅是 (*outImg).at&lt;Vect3b&gt;(x,y)[0] = channelvaluepixel;

【讨论】:

    猜你喜欢
    • 2013-09-21
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2021-11-14
    相关资源
    最近更新 更多