【发布时间】:2016-08-20 15:19:01
【问题描述】:
我有一个 c-Api opencv 项目,我想改成 c++ (mat) 看到这个原始代码:
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;
查看使用的每一行的错误 '->' 。 请帮帮我...
【问题讨论】:
-
错误告诉你 tmp1(等等)不是一个 POINTER,而是类型 cv::Mat。所以,在这种情况下,我会假设处理这个问题的正确形式是 tmp1.imageData (等等)。但这是一个猜测,因为您没有显示足够的代码。
-
尝试使用
tmp1.imageData