【发布时间】: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->at<Vect3b>(x,y)[0]而不仅仅是(*outImg).at<Vect3b>(x,y)[0] = channelvaluepixel; -
无法复制;原始代码,即
outImg->at<Vec3b>(x,y)[0],适用于我(Windows 10、Visual Studio Prof. 2017、OpenCV 4.0.0)。 -
> 由于 outImg 是一个指针,我不能指向它的地址来更改它 我想你可能对成员访问运算符有一些误解 (
->)
标签: c++ function opencv pointers vector