added new files
This commit is contained in:
parent
0736ede7e5
commit
95db69f6b9
@ -288,6 +288,8 @@ public:
|
|||||||
|
|
||||||
CV_EXPORTS_W Ptr<MergeRobertson> createMergeRobertson();
|
CV_EXPORTS_W Ptr<MergeRobertson> createMergeRobertson();
|
||||||
|
|
||||||
|
CV_EXPORTS_W void decolor(InputArray src, OutputArray grayscale, OutputArray color_boost);
|
||||||
|
|
||||||
} // cv
|
} // cv
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
76
modules/photo/src/contrast_preserve.cpp
Normal file
76
modules/photo/src/contrast_preserve.cpp
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#include "precomp.hpp"
|
||||||
|
#include "opencv2/photo.hpp"
|
||||||
|
#include "opencv2/imgproc.hpp"
|
||||||
|
#include "math.h"
|
||||||
|
#include <vector>
|
||||||
|
#include <limits>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "contrast_preserve.hpp"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace cv;
|
||||||
|
int rounding(double);
|
||||||
|
|
||||||
|
int rounding(double a)
|
||||||
|
{
|
||||||
|
return int(a + 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cv::decolor(InputArray _src, OutputArray _gray, OutputArray _boost)
|
||||||
|
{
|
||||||
|
Mat I = _src.getMat();
|
||||||
|
_gray.create(I.size(), CV_8UC1);
|
||||||
|
Mat dst = _gray.getMat();
|
||||||
|
|
||||||
|
_boost.create(I.size(), CV_8UC3);
|
||||||
|
Mat color_boost = _boost.getMat();
|
||||||
|
|
||||||
|
if(!I.data )
|
||||||
|
{
|
||||||
|
cout << "Could not open or find the image" << endl ;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(I.channels() !=3)
|
||||||
|
{
|
||||||
|
cout << "Input Color Image" << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float sigma = .02;
|
||||||
|
int maxIter = 8;
|
||||||
|
int iterCount = 0;
|
||||||
|
|
||||||
|
int h = I.size().height;
|
||||||
|
int w = I.size().width;
|
||||||
|
|
||||||
|
Mat img;
|
||||||
|
Decolor obj;
|
||||||
|
|
||||||
|
double sizefactor;
|
||||||
|
|
||||||
|
if((h + w) > 900)
|
||||||
|
{
|
||||||
|
sizefactor = (double)900/(h+w);
|
||||||
|
resize(I,I,Size(rounding(h*sizefactor),rounding(w*sizefactor)));
|
||||||
|
img = Mat(I.size(),CV_32FC3);
|
||||||
|
I.convertTo(img,CV_32FC3,1.0/255.0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
img = Mat(I.size(),CV_32FC3);
|
||||||
|
I.convertTo(img,CV_32FC3,1.0/255.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
obj.init();
|
||||||
|
|
||||||
|
vector <double> Cg;
|
||||||
|
vector < vector <double> > polyGrad;
|
||||||
|
vector < vector <double> > bc;
|
||||||
|
vector < vector < int > > comb;
|
||||||
|
|
||||||
|
vector <double> alf;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
31
modules/photo/src/contrast_preserve.hpp
Normal file
31
modules/photo/src/contrast_preserve.hpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "precomp.hpp"
|
||||||
|
#include "opencv2/photo.hpp"
|
||||||
|
#include "opencv2/imgproc.hpp"
|
||||||
|
#include "math.h"
|
||||||
|
#include <vector>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace cv;
|
||||||
|
|
||||||
|
class Decolor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Mat kernel;
|
||||||
|
Mat kernel1;
|
||||||
|
int order;
|
||||||
|
void init();
|
||||||
|
void grad_system(Mat img, vector < vector < double > > &polyGrad, vector < double > &Cg, vector < vector <int> >& comb);
|
||||||
|
};
|
||||||
|
|
||||||
|
void Decolor::init()
|
||||||
|
{
|
||||||
|
kernel = Mat(1,2, CV_32FC1);
|
||||||
|
kernel1 = Mat(2,1, CV_32FC1);
|
||||||
|
kernel.at<float>(0,0)=1.0;
|
||||||
|
kernel.at<float>(0,1)=-1.0;
|
||||||
|
kernel1.at<float>(0,0)=1.0;
|
||||||
|
kernel1.at<float>(1,0)=-1.0;
|
||||||
|
order = 2;
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user