gpt4 book ai didi

c++ - 无法将结构值插入 inRange openCV

转载 作者:行者123 更新时间:2023-11-30 16:56:12 31 4
gpt4 key购买 nike

我似乎无法将结构上的成员值插入到 inRange 函数中。程序可以编译,但阈值并未按预期工作。如果我插入一个不是来自结构的值,它会很好地工作。

struct objects{
int iLowH;
int iHighH;

int iLowS;
int iHighS;

int iLowV;
int iHighV;

Point coordinate;
};


int iLowH = 0;
int iHighH = 30;

int iLowS = 182;
int iHighS = 255;

int iLowV = 0;
int iHighV = 255;

int refArea=10000;

orange.iLowH = 0;
orange.iHighH = 100;
orange.iLowS = 182;
orange.iHighS = 255;
orange.iLowV = 100;
orange.iLowH = 255;

inRange(hsvImage, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), threshold);

imshow("hsv",threshold);

这个效果很好

struct objects{
int iLowH;
int iHighH;

int iLowS;
int iHighS;

int iLowV;
int iHighV;

Point coordinate;
};


int iLowH = 0;
int iHighH = 30;

int iLowS = 182;
int iHighS = 255;

int iLowV = 0;
int iHighV = 255;

int refArea=10000;

orange.iLowH = 0;
orange.iHighH = 100;
orange.iLowS = 182;
orange.iHighS = 255;
orange.iLowV = 100;
orange.iLowH = 255;

inRange(hsvImage, Scalar(orange.iLowH, orange.iLowS, orange.iLowV), Scalar(orange.iHighH, orange.iHighS, orange.iHighV), threshold);

imshow("hsv",threshold);

这不起作用。阈值图像仅显示黑色。如果我更改 iLowH = Orange.iLowH 等的值,它也将不起作用。如果我改变其中之一,它也不起作用。如果我打印橙色的值,它会显示正确的值,如果我打印橙色的数据类型,它会显示每个值的 int。

最佳答案

orange.iHighV 未初始化。在您的代码中:

orange.iLowH = 0;
orange.iHighH = 100;
orange.iLowS = 182;
orange.iHighS = 255;
orange.iLowV = 100;
orange.iLowH = 255;
// ^^ overwrites previous value 0, should probably be iHighV instead.

两个版本之间的实际阈值有所不同(iHighH = 30orange.iHighH = 100iLowV = 0 Orange.iLowV = 100),因此这也可能导致不同的结果。

关于c++ - 无法将结构值插入 inRange openCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991476/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com