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

标签 c++ c opencv struct

我似乎无法将结构上的成员值插入到 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/

相关文章:

c++ - QML 打开 GUI 窗口和控制台

c++ - 静态摄像机视频的 OpenCV 噪声去除

c++ - LINK1104 的 Opencv 构建错误

c++ - 当通过指针递增成员 int 时,c++ 与 -> 的运算符优先级如何工作?

c++ - "delete this"到一个用 std::shared_ptr 分配的对象?

c++ - _msize 调试断言失败

c - 如何将两个32位整数组合成一个64位整数?

c - C中的内存消耗

c - Cello 库如何能够引入运算符和关键字的使用,即使它们不是 C 库的一部分?

optimization - 使用CMake编译openCV:设置架构和优化标志