문제

"cv :: scalar"유형을 반환하는 "myclass"라는 클래스가 있습니다.

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

그러나 "for"라인의 비교 부분은 "아니오 운영자> 가이 피연산자들과 일치하는"라고 말하면 오류가 발생합니다.누군가 나를 도울 수 있니?감사합니다.

도움이 되었습니까?

해결책

두 개의 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;
}
.

이 작업을 수행하면 Per cv::Scalar 클래스 자체를 괴롭히지 않고 두 개의 cv::Scalar가 비교되는 방식을 정의 할 수 있습니다.

필자는 예를 들어 main.cpp에 넣었으나 비교가 수행되는 곳에서 볼 수있는 오래 원하는 곳에있는 운영자를 정의 할 수 있습니다.

다른 팁

ZHI LU의 답변을 완료하기 위해 :

스칼라의 요소를 비교하려면 다음을 수행해야합니다.

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(i = 0; i < 0; i++){}
.

스칼라는 4 배 유형의 요소 배열입니다.이러한 구조에 모든 수의 요소 (이중 유형)를 저장할 수 있습니다.따라서 하나의 스칼라의 인스턴스를 int 유형과 같이 직접 다른 것과 비교할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top