ошибка: базовый операнд ‘- & gt;’ имеет тип без указателя ‘cv :: Mat’

у меня есть проект opencv c-Api, и я хочу перейти на c ++ (мат)
увидеть этот оригинальный код:

current_cost = 0;
basePtr = (unsigned char*)tmp1->imageData;
for( int j=0; j<tmp1->height; basePtr += tmp1->widthStep, j++ )
{
iterator = basePtr;
for( int i=0; i<tmp1->width; iterator++, i++ )
if( *iterator == 255 )
current_cost++;
}

basePtr = (unsigned char*)tmp2->imageData;
for( int j=0; j < tmp2->height; basePtr += tmp2->widthStep, j++ )
{
iterator = basePtr;
for( int i=0; i<tmp2->width; iterator++, i++ )
if( *iterator == 0 )
current_cost++;
}
if( current_cost < cost )
return true;
else return false;

после запуска этого проекта, увидеть эту ошибку

main.cpp:63:35: error: base operand of ‘->’ has non-pointer type ‘cv::Mat’
basePtr = (unsigned char*)tmp1->imageData;

смотрите ошибку для каждой используемой строки ‘->’.
Помогите мне, пожалуйста …

-3

Решение

Вы должны не просто конвертировать каждую строку кода, но и использовать API C ++ с умом. Ваша функция может быть переписана просто как:

bool foo(const Mat& tmp1, const Mat& tmp2, int cost) {
int count = countNonZero(tmp1 == 255);
count += countNonZero(tmp2 == 0);
return count < cost;
}
0

Другие решения

Других решений пока нет …