2012-10-03 31 views
3
比較標量

我有一個名爲「MyClass的」類,它返回「CV ::標」型的,我想這樣做:如何在OpenCV中

cv::Scalar myValue; 
for (myValue > myClass (i,j)) 
.... 

但在「爲比較部分「行發出錯誤,說」沒有操作符>匹配這些操作數「。有人能幫助我嗎?謝謝。

+1

我不知道cv是否有與之相近的東西,但是你可以自由地用你需要的語義來定義你自己的東西。 – chris

+2

問題是如何比較具有4個值的兩個元組,並且由您來定義一個標準。 – Sam

+0

你能解釋一下嗎? –

回答

2

如果沒有運營商來比較兩個cv::Scalar元素,你可以將其定義:

#include "OpenCVStuff.h" 

// Custom operator to compare cv::Scalar class... 
bool operator >(const cv::Scalar &a, const cv::Scalar &b) 
{ 
    bool Result = false; 
    // Do whatever you think a Scalar comparison must be. 
    return Result; 
} 

int main(int argc, char **argv) 
{ 
    cv::Scalar myValue; 

    // Assuming myClass (i,j) returns a cv::Scalar 
    for (myValue > myClass (i,j)) 
    { 
     // Do something... 
    } 

    return 0; 
} 

這樣做,你可以定義路兩cv::Scalar是而不用打擾cv::Scalar本身。

作爲示例,我已將它放入main.cpp中,但您可以在任何需要的位置定義運算符,只要在進行比較時可以看到該運算符即可。

+0

非常感謝! –

5

標量是一個四元組類型的元素。您可以在這種結構中存儲任意數量的元素(雙精度型)。所以,你不能直接比較一個Scalar實例和int類型實例。

6

爲了完成之路的回答是:

如果你想比較標量的元素,你應該做的未來:

cv::Scalar scalar(myValue); //here you assign a value to the element (0,0) 
for (scalar.val[0,0] > myClass (i,j)) // access the elment of Scalar 
{ 
} 

反正有使用標量,如果你只是想不點一個單一的價值。還要注意的是,你需要一個適當的for循環語句,比如

for(i = 0; i < 0; i++){} 
+1

我認爲你的意思是'scalar.val [0]'。 – misha

+0

謝謝您的回答:) –