Corrections for compiling issues in Win, And and Doc
This commit is contained in:
parent
61c27ac81e
commit
fe7bab499f
@ -70,7 +70,7 @@ An Chi based cost extraction. ::
|
||||
CV_EXPORTS_W Ptr<HistogramCostExtractor> createChiHistogramCostExtractor(int nDummies=25, float defaultCost=0.2);
|
||||
|
||||
EMDL1HistogramCostExtractor
|
||||
-------------------------
|
||||
---------------------------
|
||||
.. ocv:class:: EMDL1HistogramCostExtractor : public HistogramCostExtractor
|
||||
|
||||
An EMD-L1 based cost extraction. ::
|
||||
|
@ -1,11 +1,11 @@
|
||||
Shape Distance and Common Interfaces
|
||||
Shape Distance and Common Interfaces
|
||||
====================================
|
||||
|
||||
.. highlight:: cpp
|
||||
|
||||
Shape Distance algorithms in OpenCV are derivated from a common interface that allows you to
|
||||
switch between them in a practical way for solving the same problem with different methods.
|
||||
Thus, all objects that implement shape distance measures inherit the
|
||||
Thus, all objects that implement shape distance measures inherit the
|
||||
:ocv:class:`ShapeDistanceExtractor` interface.
|
||||
|
||||
|
||||
@ -123,7 +123,7 @@ ShapeContextDistanceExtractor::setShapeContextWeight
|
||||
----------------------------------------------------
|
||||
Set the weight of the shape context distance in the final value of the shape distance.
|
||||
The shape context distance between two shapes is defined as the symmetric sum of shape
|
||||
context matching costs over best matching points.
|
||||
context matching costs over best matching points.
|
||||
The final value of the shape distance is a user-defined linear combination of the shape
|
||||
context distance, an image appearance distance, and a bending energy.
|
||||
|
||||
|
@ -55,4 +55,4 @@ CV_EXPORTS float EMDL1(InputArray signature1, InputArray signature2);
|
||||
|
||||
}//namespace cv
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -88,7 +88,7 @@ public:
|
||||
virtual void read(const FileNode& fn)
|
||||
{
|
||||
CV_Assert( (String)fn["name"] == name_ );
|
||||
fullAffine = (int)fn["affine_type"];
|
||||
fullAffine = (bool)int(fn["affine_type"]);
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -41,11 +41,11 @@
|
||||
//M*/
|
||||
|
||||
/*
|
||||
* Implementation of an optimized EMD for histograms based in
|
||||
* the papers "EMD-L1: An efficient and Robust Algorithm
|
||||
* for comparing histogram-based descriptors", by Haibin Ling and
|
||||
* Implementation of an optimized EMD for histograms based in
|
||||
* the papers "EMD-L1: An efficient and Robust Algorithm
|
||||
* for comparing histogram-based descriptors", by Haibin Ling and
|
||||
* Kazunori Okuda; and "The Earth Mover's Distance is the Mallows
|
||||
* Distance: Some Insights from Statistics", by Elizaveta Levina and
|
||||
* Distance: Some Insights from Statistics", by Elizaveta Levina and
|
||||
* Peter Bickel, based on HAIBIN LING AND KAZUNORI OKADA implementation.
|
||||
*/
|
||||
|
||||
@ -393,9 +393,9 @@ bool EmdL1::greedySolution3()
|
||||
|
||||
//- determine which direction to move, either right or upward
|
||||
dFlow = D[i1][i2][i3];
|
||||
f1 = i1<(binsDim1-1)?fabs(dFlow+d1s[i1+1]):VHIGH;
|
||||
f2 = i2<(binsDim2-1)?fabs(dFlow+d2s[i2+1]):VHIGH;
|
||||
f3 = i3<(binsDim3-1)?fabs(dFlow+d3s[i3+1]):VHIGH;
|
||||
f1 = i1<(binsDim1-1)?(float)fabs(dFlow+d1s[i1+1]):VHIGH;
|
||||
f2 = i2<(binsDim2-1)?(float)fabs(dFlow+d2s[i2+1]):VHIGH;
|
||||
f3 = i3<(binsDim3-1)?(float)fabs(dFlow+d3s[i3+1]):VHIGH;
|
||||
|
||||
if(f1<f2 && f1<f3)
|
||||
{
|
||||
@ -791,4 +791,3 @@ float cv::EMDL1(InputArray _signature1, InputArray _signature2)
|
||||
EmdL1 emdl1;
|
||||
return emdl1.getEMDL1(signature1, signature2);
|
||||
}
|
||||
|
||||
|
@ -139,4 +139,3 @@ private:
|
||||
int m_iFrom;
|
||||
int m_iTo;
|
||||
};
|
||||
|
||||
|
@ -88,7 +88,7 @@ public:
|
||||
{
|
||||
CV_Assert( (String)fn["name"] == name_ );
|
||||
distanceFlag = (int)fn["distance"];
|
||||
rankProportion = (int)fn["rank"];
|
||||
rankProportion = (float)fn["rank"];
|
||||
}
|
||||
|
||||
private:
|
||||
@ -111,7 +111,7 @@ static float _apply(const Mat &set1, const Mat &set2, int distType, double propR
|
||||
for (int c=0; c<disMat.cols; c++)
|
||||
{
|
||||
Point2f diff = set1.at<Point2f>(0,r)-set2.at<Point2f>(0,c);
|
||||
disMat.at<float>(r,c) = norm(Mat(diff), distType);
|
||||
disMat.at<float>(r,c) = (float)norm(Mat(diff), distType);
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,5 +147,3 @@ Ptr <HausdorffDistanceExtractor> createHausdorffDistanceExtractor(int distanceFl
|
||||
}
|
||||
|
||||
} // cv
|
||||
|
||||
|
||||
|
@ -156,7 +156,7 @@ void NormHistogramCostExtractorImpl::buildCostMatrix(InputArray _descriptors1, I
|
||||
if (i<scd1.rows && j<scd2.rows)
|
||||
{
|
||||
Mat columnDiff = scd1.row(i)-scd2.row(j);
|
||||
costMatrix.at<float>(i,j)=norm(columnDiff, flag);
|
||||
costMatrix.at<float>(i,j)=(float)norm(columnDiff, flag);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -288,11 +288,11 @@ void EMDHistogramCostExtractorImpl::buildCostMatrix(InputArray _descriptors1, In
|
||||
sig2.col(0)=scd2.row(j).t();
|
||||
for (int k=0; k<sig1.rows; k++)
|
||||
{
|
||||
sig1.at<float>(k,1)=k;
|
||||
sig1.at<float>(k,1)=float(k);
|
||||
}
|
||||
for (int k=0; k<sig2.rows; k++)
|
||||
{
|
||||
sig2.at<float>(k,1)=k;
|
||||
sig2.at<float>(k,1)=float(k);
|
||||
}
|
||||
|
||||
costMatrix.at<float>(i,j) = cv::EMD(sig1, sig2, flag);
|
||||
@ -543,5 +543,3 @@ Ptr <HistogramCostExtractor> createEMDL1HistogramCostExtractor(int nDummies, flo
|
||||
}
|
||||
|
||||
} // cv
|
||||
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
||||
|
||||
/*
|
||||
* Implementation of the paper Shape Matching and Object Recognition Using Shape Contexts
|
||||
* Belongie et al., 2002 by Juan Manuel Perez for GSoC 2013.
|
||||
* Belongie et al., 2002 by Juan Manuel Perez for GSoC 2013.
|
||||
*/
|
||||
#include "precomp.hpp"
|
||||
//#include "opencv2/highgui.hpp"
|
||||
@ -176,7 +176,7 @@ protected:
|
||||
{
|
||||
for (int j=0; j<contourMat.cols; j++)
|
||||
{
|
||||
disMatrix.at<float>(i,j) = norm( cv::Mat(contourMat.at<cv::Point2f>(0,i)-contourMat.at<cv::Point2f>(0,j)), cv::NORM_L2 );
|
||||
disMatrix.at<float>(i,j) = (float)norm( cv::Mat(contourMat.at<cv::Point2f>(0,i)-contourMat.at<cv::Point2f>(0,j)), cv::NORM_L2 );
|
||||
if (_meanDistance<0)
|
||||
{
|
||||
if (queryInliers.size()>0)
|
||||
@ -193,7 +193,7 @@ protected:
|
||||
|
||||
if (_meanDistance<0)
|
||||
{
|
||||
meanDistance=mean(disMatrix, mask)[0];
|
||||
meanDistance=(float)mean(disMatrix, mask)[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -239,7 +239,7 @@ protected:
|
||||
float refAngle = atan2(refPt.y, refPt.x);
|
||||
angleMatrix.at<float>(i,j) -= refAngle;
|
||||
}
|
||||
angleMatrix.at<float>(i,j) = fmod(angleMatrix.at<float>(i,j)+FLT_EPSILON,2*CV_PI)+CV_PI;
|
||||
angleMatrix.at<float>(i,j) = float(fmod(double(angleMatrix.at<float>(i,j)+(double)FLT_EPSILON),2*CV_PI)+CV_PI);
|
||||
//angleMatrix.at<float>(i,j) = 1+floor( angleMatrix.at<float>(i,j)*nAngularBins/(2*CV_PI) );
|
||||
}
|
||||
}
|
||||
@ -426,7 +426,7 @@ protected:
|
||||
for (j = 0; j < costMatrix.rows; j++)
|
||||
{
|
||||
d[j] = costMatrix.at<float>(freerow,j) - v[j];
|
||||
pred[j] = freerow;
|
||||
pred[j] = float(freerow);
|
||||
collist[j] = j; // init column list.
|
||||
}
|
||||
|
||||
@ -479,7 +479,7 @@ protected:
|
||||
v2 = costMatrix.at<float>(i,j) - v[j] - h;
|
||||
if (v2 < d[j])
|
||||
{
|
||||
pred[j] = i;
|
||||
pred[j] = float(i);
|
||||
if (v2 == min)
|
||||
{
|
||||
if (colsol[j] < 0)
|
||||
@ -511,7 +511,7 @@ protected:
|
||||
// reset row and column assignments along the alternating path.
|
||||
do
|
||||
{
|
||||
i = pred[endofpath];
|
||||
i = int(pred[endofpath]);
|
||||
colsol[endofpath] = i;
|
||||
j1 = endofpath;
|
||||
endofpath = rowsol[i];
|
||||
@ -526,7 +526,7 @@ protected:
|
||||
{
|
||||
double minval;
|
||||
minMaxIdx(trueCostMatrix.row(nrow), &minval);
|
||||
leftcost+=minval;
|
||||
leftcost+=float(minval);
|
||||
}
|
||||
leftcost /= trueCostMatrix.rows;
|
||||
|
||||
@ -535,7 +535,7 @@ protected:
|
||||
{
|
||||
double minval;
|
||||
minMaxIdx(trueCostMatrix.col(ncol), &minval);
|
||||
rightcost+=minval;
|
||||
rightcost+=float(minval);
|
||||
}
|
||||
rightcost /= trueCostMatrix.cols;
|
||||
|
||||
@ -815,7 +815,7 @@ float ShapeContextDistanceExtractorImpl::computeDistance(InputArray contour1, In
|
||||
{
|
||||
float xx = sset1.at<Point2f>(0,pt).x;
|
||||
float yy = sset1.at<Point2f>(0,pt).y;
|
||||
float val = std::exp( -( (xx-jj)*(xx-jj) + (yy-ii)*(yy-ii) )/(2*sigma*sigma) ) / (sigma*sigma*2*CV_PI);
|
||||
float val = float(std::exp( -float( (xx-jj)*(xx-jj) + (yy-ii)*(yy-ii) )/(2*sigma*sigma) ) / (sigma*sigma*2*CV_PI));
|
||||
gaussWindow.at<float>(ii,jj) += val;
|
||||
}
|
||||
}
|
||||
@ -831,7 +831,7 @@ float ShapeContextDistanceExtractorImpl::computeDistance(InputArray contour1, In
|
||||
appIm.at<float>(ii,jj) = elema*elemb;
|
||||
}
|
||||
}
|
||||
iAppearance = cv::sum(appIm)[0]/sset1.cols;
|
||||
iAppearance = float(cv::sum(appIm)[0]/sset1.cols);
|
||||
}
|
||||
sDistance = matcher.getMatchingCost();
|
||||
|
||||
|
@ -104,7 +104,7 @@ protected:
|
||||
String name_;
|
||||
};
|
||||
|
||||
static double distance(Point2f p, Point2f q)
|
||||
static float distance(Point2f p, Point2f q)
|
||||
{
|
||||
Point2f diff = p - q;
|
||||
float norma = diff.x*diff.x + diff.y*diff.y;// - 2*diff.x*diff.y;
|
||||
@ -237,7 +237,7 @@ void ThinPlateSplineShapeTransformerImpl::estimateTransformation(InputArray _pts
|
||||
{
|
||||
if (i==j)
|
||||
{
|
||||
matK.at<float>(i,j)=regularizationParameter;
|
||||
matK.at<float>(i,j)=float(regularizationParameter);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -87,7 +87,7 @@ vector<Point2f> CV_HaussTest::normalizeContour(const vector<Point> &contour)
|
||||
else
|
||||
{
|
||||
disMat.at<float>(ii,jj)=
|
||||
fabs(contour[ii].x*contour[jj].x)+fabs(contour[ii].y*contour[jj].y);
|
||||
float(fabs(double(contour[ii].x*contour[jj].x)))+float(fabs(double(contour[ii].y*contour[jj].y)));
|
||||
}
|
||||
}
|
||||
meanpt.x+=contour[ii].x;
|
||||
@ -95,7 +95,7 @@ vector<Point2f> CV_HaussTest::normalizeContour(const vector<Point> &contour)
|
||||
}
|
||||
meanpt.x/=contour.size();
|
||||
meanpt.y/=contour.size();
|
||||
meanVal=cv::mean(disMat)[0];
|
||||
meanVal=float(cv::mean(disMat)[0]);
|
||||
for (size_t ii=0; ii<contour.size(); ii++)
|
||||
{
|
||||
output[ii].x = (contour[ii].x-meanpt.x)/meanVal;
|
||||
@ -274,7 +274,7 @@ void CV_HaussTest::run(int /* */)
|
||||
{
|
||||
mpegTest();
|
||||
displayMPEGResults();
|
||||
ts->set_failed_test_info(cvtest::TS::OK);
|
||||
ts->set_failed_test_info(cvtest::TS::OK);
|
||||
}
|
||||
|
||||
TEST(Hauss, regression) { CV_HaussTest test; test.safe_run(); }
|
||||
|
@ -81,7 +81,7 @@ CV_ShapeTest::~CV_ShapeTest()
|
||||
}
|
||||
|
||||
vector <Point2f> CV_ShapeTest::convertContourType(const Mat& currentQuery, int n)
|
||||
{
|
||||
{
|
||||
vector<vector<Point> > _contoursQuery;
|
||||
vector <Point2f> contoursQuery;
|
||||
findContours(currentQuery, _contoursQuery, RETR_LIST, CHAIN_APPROX_NONE);
|
||||
|
@ -75,7 +75,7 @@ int main(int argc, char** argv)
|
||||
imshow("QUERY", queryToShow);
|
||||
moveWindow("TEST", 0,0);
|
||||
vector<Point> contQuery = simpleContour(query);
|
||||
int bestMatch;
|
||||
int bestMatch = 0;
|
||||
float bestDis=FLT_MAX;
|
||||
for ( int ii=1; ii<=20; ii++ )
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ int main(int argc, char** argv)
|
||||
BFMatcher matcher(NORM_L2);
|
||||
vector<DMatch> matches;
|
||||
matcher.match(descriptors1, descriptors2, matches);
|
||||
|
||||
|
||||
// drawing the results
|
||||
namedWindow("matches", 1);
|
||||
Mat img_matches;
|
||||
|
Loading…
x
Reference in New Issue
Block a user