{
Mat pts1 = _pts1.getMat();
Mat pts2 = _pts2.getMat();
- CV_Assert((pts1.channels()==2) & (pts1.cols>0) & (pts2.channels()==2) & (pts2.cols>0));
+ CV_Assert((pts1.channels()==2) && (pts1.cols>0) && (pts2.channels()==2) && (pts2.cols>0));
CV_Assert(_matches.size()>1);
if (pts1.type() != CV_32F)
float AffineTransformerImpl::applyTransformation(InputArray inPts, OutputArray outPts)
{
Mat pts1 = inPts.getMat();
- CV_Assert((pts1.channels()==2) & (pts1.cols>0));
+ CV_Assert((pts1.channels()==2) && (pts1.cols>0));
//Apply transformation in the complete set of points
Mat fAffine;
virtual void setRankProportion(float _rankProportion)
{
- CV_Assert((_rankProportion>0) & (_rankProportion<=1));
+ CV_Assert((_rankProportion>0) && (_rankProportion<=1));
rankProportion=_rankProportion;
}
virtual float getRankProportion() const {return rankProportion;}
set1.convertTo(set1, CV_32F);
if (set2.type() != CV_32F)
set2.convertTo(set2, CV_32F);
- CV_Assert((set1.channels()==2) & (set1.cols>0));
- CV_Assert((set2.channels()==2) & (set2.cols>0));
+ CV_Assert((set1.channels()==2) && (set1.cols>0));
+ CV_Assert((set2.channels()==2) && (set2.cols>0));
return std::max( _apply(set1, set2, distanceFlag, rankProportion),
_apply(set2, set1, distanceFlag, rankProportion) );
}
* Belongie et al., 2002 by Juan Manuel Perez for GSoC 2013.
*/
#include "precomp.hpp"
-//#include "opencv2/highgui.hpp"
+#include "opencv2/core.hpp"
/*
* ShapeContextDescriptor class
*/
{
if (queryInliers.size()>0)
{
- mask.at<char>(i,j)=char(queryInliers[j] & queryInliers[i]);
+ mask.at<char>(i,j)=char(queryInliers[j] && queryInliers[i]);
}
else
{
virtual void setImages(InputArray _image1, InputArray _image2)
{
Mat image1_=_image1.getMat(), image2_=_image2.getMat();
- CV_Assert((image1_.depth()==0) & (image2_.depth()==0));
+ CV_Assert((image1_.depth()==0) && (image2_.depth()==0));
image1=image1_;
image2=image2_;
}
virtual void getImages(OutputArray _image1, OutputArray _image2) const
{
- CV_Assert((!image1.empty()) & (!image2.empty()));
+ CV_Assert((!image1.empty()) && (!image2.empty()));
_image1.create(image1.size(), image1.type());
_image2.create(image2.size(), image2.type());
_image1.getMat()=image1;
else
sset1.copyTo(set2);
- CV_Assert((set1.channels()==2) & (set1.cols>0));
- CV_Assert((set2.channels()==2) & (set2.cols>0));
+ CV_Assert((set1.channels()==2) && (set1.cols>0));
+ CV_Assert((set2.channels()==2) && (set2.cols>0));
if (imageAppearanceWeight!=0)
{
- CV_Assert((!image1.empty()) & (!image2.empty()));
+ CV_Assert((!image1.empty()) && (!image2.empty()));
}
// Initializing Extractor, Descriptor structures and Matcher //
// Initializing some variables //
std::vector<int> inliers1, inliers2;
- bool isTPS=false;
- if ( dynamic_cast<ThinPlateSplineShapeTransformer*>(&*transformer) )
- isTPS=true;
+
+ Ptr<ThinPlateSplineShapeTransformer> transDown = transformer.dynamicCast<ThinPlateSplineShapeTransformer>();
+
Mat warpedImage;
for (int ii=0; ii<iterations; ii++)
{
matcher.matchDescriptors(set1SCD, set2SCD, matches, comparer, inliers1, inliers2);
// apply TPS transform //
- if ( isTPS )
- dynamic_cast<ThinPlateSplineShapeTransformer*>(&*transformer)->setRegularizationParameter(beta);
+ if ( !transDown.empty() )
+ transDown->setRegularizationParameter(beta);
transformer->estimateTransformation(set1, set2, matches);
bEnergy += transformer->applyTransformation(set1, set1);
// Have to accumulate the transformation along all the iterations
if (ii==0)
{
- if ( isTPS )
+ if ( !transDown.empty() )
{
image2.copyTo(warpedImage);
}
if (imageAppearanceWeight!=0)
{
// compute appearance cost
- if ( isTPS )
+ if ( !transDown.empty() )
{
resize(warpedImage, warpedImage, image1.size());
Mat temp=(warpedImage-image1);
{
CV_Assert(tpsComputed);
Mat pts1 = inPts.getMat();
- CV_Assert((pts1.channels()==2) & (pts1.cols>0));
+ CV_Assert((pts1.channels()==2) && (pts1.cols>0));
//Apply transformation in the complete set of points
// Ensambling output //
{
Mat pts1 = _pts1.getMat();
Mat pts2 = _pts2.getMat();
- CV_Assert((pts1.channels()==2) & (pts1.cols>0) & (pts2.channels()==2) & (pts2.cols>0));
+ CV_Assert((pts1.channels()==2) && (pts1.cols>0) && (pts2.channels()==2) && (pts2.cols>0));
CV_Assert(_matches.size()>1);
if (pts1.type() != CV_32F)