용어

0

다음 OpenCV의 코드 여기용어

Mat *curent; 
    current = new Mat(); 
    cv::Rect bRect = cv::boundingRect(Mat(*points).reshape(2)); 

    Mat roi = *current(bRect); 

에서 참조하시기 바랍니다 1 개 인수를 복용 함수에 평가하지 않습니다, 나는 매트에 ROI를 얻기 위해 노력하고 있어요는 roi을했다. 그러나 위 코드의 마지막 줄을 실행하려고 할 때마다 오류 term does not evaluate to a function taking 1 arguments이 발생합니다. 나는 C++에서 몇 번이나 포인터없이 ROI를 얻는 것과 같은 기법을 따라 왔으며 효과가 있었다. 나는 문제가 포인터 current와 함께있는 것 같아? current은 로컬 변수가 믿을 수없는 방식으로 응용 프로그램을 느리게했기 때문에 포인터 여야합니다.

그렇다면이 문제를 어떻게 해결하고 ROI를 얻을 수 있습니까?

답변

3

제발, 그 포인터를 버려! 당신이 내부 매트 refcount를에 파괴를 난파거야

"지역 변수는 믿을 수없는 방법으로 응용 프로그램을 둔화."정의되지 않은 동작과 memleaks을 생산

실제로 58 바이트 구조체를 복사하는 것이 이유라고 생각하십니까? 나는 너를 믿지 않는다.

음, 어쨌든 -() 연산자는 * 연산자보다 우선 순위가 높습니다.

+0

이것은 실시간 응용 프로그램입니다. 그래서 다시 변수를 만들면 상황이 최악이됩니다. 나는 그것을 시험했다. 어쨌든, 나는 당신의 힌트를 얻지 못했습니다. 설명해 주시겠습니까/예를 들어 주시겠습니까? –

+0

매트 roi = (* 현재) (bRect); – berak

+0

오, 예, 효과가있었습니다. 고맙습니다! –