OpenCV에서 스칼라를 비교하는 방법
-
13-12-2019 - |
문제
"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 유형과 같이 직접 다른 것과 비교할 수 없습니다.
제휴하지 않습니다 StackOverflow