Commit fe7bab49 authored by Juan Manuel Perez's avatar Juan Manuel Perez Committed by Vadim Pisarevsky

Corrections for compiling issues in Win, And and Doc

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