|
|
|
@ -338,11 +338,11 @@ int BinaryDescriptor::descriptorSize() const |
|
|
|
|
static inline int get2Pow( int i ) |
|
|
|
|
{ |
|
|
|
|
if( i >= 0 && i <= 7 ) |
|
|
|
|
return (int) pow( 2, (double) i ); |
|
|
|
|
|
|
|
|
|
return 1 << i; |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
throw std::runtime_error( "Invalid power argument" ); |
|
|
|
|
CV_Error( Error::StsBadArg, "Invalid power argument" ); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -421,7 +421,7 @@ void BinaryDescriptor::detect( const Mat& image, CV_OUT std::vector<KeyLine>& ke |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if( mask.data != NULL && ( mask.size() != image.size() || mask.type() != CV_8UC1 ) ) |
|
|
|
|
throw std::runtime_error( "Mask error while detecting lines: please check its dimensions and that data type is CV_8UC1" ); |
|
|
|
|
CV_Error( Error::StsBadArg, "Mask error while detecting lines: please check its dimensions and that data type is CV_8UC1" ); |
|
|
|
|
|
|
|
|
|
else |
|
|
|
|
detectImpl( image, keylines, mask ); |
|
|
|
@ -441,7 +441,7 @@ void BinaryDescriptor::detect( const std::vector<Mat>& images, std::vector<std:: |
|
|
|
|
for ( size_t counter = 0; counter < images.size(); counter++ ) |
|
|
|
|
{ |
|
|
|
|
if( masks[counter].data != NULL && ( masks[counter].size() != images[counter].size() || masks[counter].type() != CV_8UC1 ) ) |
|
|
|
|
throw std::runtime_error( "Masks error while detecting lines: please check their dimensions and that data types are CV_8UC1" ); |
|
|
|
|
CV_Error( Error::StsBadArg, "Mask error while detecting lines: please check its dimensions and that data type is CV_8UC1" ); |
|
|
|
|
|
|
|
|
|
else |
|
|
|
|
detectImpl( images[counter], keylines[counter], masks[counter] ); |
|
|
|
@ -461,7 +461,7 @@ void BinaryDescriptor::detectImpl( const Mat& imageSrc, std::vector<KeyLine>& ke |
|
|
|
|
|
|
|
|
|
/*check whether image depth is different from 0 */ |
|
|
|
|
if( image.depth() != 0 ) |
|
|
|
|
throw std::runtime_error( "Warning, depth image!= 0" ); |
|
|
|
|
CV_Error( Error::BadDepth, "Warning, depth image!= 0" ); |
|
|
|
|
|
|
|
|
|
/* create a pointer to self */ |
|
|
|
|
BinaryDescriptor *bn = const_cast<BinaryDescriptor*>( this ); |
|
|
|
@ -547,7 +547,7 @@ void BinaryDescriptor::computeImpl( const Mat& imageSrc, std::vector<KeyLine>& k |
|
|
|
|
|
|
|
|
|
/*check whether image's depth is different from 0 */ |
|
|
|
|
if( image.depth() != 0 ) |
|
|
|
|
throw std::runtime_error( "Error, depth of image != 0" ); |
|
|
|
|
CV_Error( Error::BadDepth, "Error, depth of image != 0" ); |
|
|
|
|
|
|
|
|
|
/* keypoints list can't be empty */ |
|
|
|
|
if( keylines.size() == 0 ) |
|
|
|
@ -2196,6 +2196,11 @@ int BinaryDescriptor::EDLineDetector::EdgeDrawing( cv::Mat &image, EdgeChains &e |
|
|
|
|
"numofedgePixel1 = " << offsetPFirst << ", numofedgePixel2 = " << offsetPSecond << ", MaxNumOfEdgePixel=" << edgePixelArraySize << std::endl; |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
if( !(offsetPFirst && offsetPSecond) ) |
|
|
|
|
{ |
|
|
|
|
std::cout << "Edge drawing Error: lines not found" << std::endl; |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*now all the edge information are stored in pFirstPartEdgeX_, pFirstPartEdgeY_,
|
|
|
|
|
*pFirstPartEdgeS_, pSecondPartEdgeX_, pSecondPartEdgeY_, pSecondPartEdgeS_; |
|
|
|
|