Removed build errors and removed test images

Removed conflict

Error fix 1

Error fix 2

Error fix 3

Error fix 3

Error fix 4

Error fix 5

Error fix 6

Error fix 7

Error fix 8

Error fix 9

Error fix 10

Error fix 11

Error fix 12

Errors fixed

Removed opencv_extra folder inside opencv folder
This commit is contained in:
siddharth 2013-10-21 19:54:32 +05:30
parent 2f65a0d4ba
commit 33e6c07485
9 changed files with 171 additions and 249 deletions

View File

@ -80,7 +80,7 @@ textureFlattening
By retaining only the gradients at edge locations, before integrating with the Poisson solver, one washes out the texture of the selected By retaining only the gradients at edge locations, before integrating with the Poisson solver, one washes out the texture of the selected
region, giving its contents a flat aspect. Here Canny Edge Detector is used. region, giving its contents a flat aspect. Here Canny Edge Detector is used.
.. ocv:function:: void textureFlattening(InputArray src, InputArray mask, OutputArray dst, double low_threshold, double high_threshold, int kernel_size) .. ocv:function:: void textureFlattening(InputArray src, InputArray mask, OutputArray dst, double low_threshold=30 , double high_threshold=45, int kernel_size=3)
:param src: Input 8-bit 3-channel image. :param src: Input 8-bit 3-channel image.

View File

@ -72,18 +72,3 @@ Stylization aims to produce digital imagery with a wide variety of effects not f
:param sigma_s: Range between 0 to 200. :param sigma_s: Range between 0 to 200.
:param sigma_r: Range between 0 to 1. :param sigma_r: Range between 0 to 1.
edgeEnhance
-----------
Able to suppress low-amplitude details and enhance edges.
.. ocv:function:: void edgeEnhance(InputArray src, OutputArray dst, float sigma_s = 60, float sigma_r = 0.45)
:param src: Input 8-bit 3-channel image.
:param dst: Output 8-bit 1-channel image.
:param sigma_s: Range between 0 to 200.
:param sigma_r: Range between 0 to 1.

View File

@ -93,213 +93,213 @@ namespace cv
float h = 3, float hColor = 3, float h = 3, float hColor = 3,
int templateWindowSize = 7, int searchWindowSize = 21); int templateWindowSize = 7, int searchWindowSize = 21);
enum { LDR_SIZE = 256 }; enum { LDR_SIZE = 256 };
class CV_EXPORTS_W Tonemap : public Algorithm class CV_EXPORTS_W Tonemap : public Algorithm
{ {
public: public:
CV_WRAP virtual void process(InputArray src, OutputArray dst) = 0; CV_WRAP virtual void process(InputArray src, OutputArray dst) = 0;
CV_WRAP virtual float getGamma() const = 0; CV_WRAP virtual float getGamma() const = 0;
CV_WRAP virtual void setGamma(float gamma) = 0; CV_WRAP virtual void setGamma(float gamma) = 0;
}; };
CV_EXPORTS_W Ptr<Tonemap> createTonemap(float gamma = 1.0f); CV_EXPORTS_W Ptr<Tonemap> createTonemap(float gamma = 1.0f);
// "Adaptive Logarithmic Mapping For Displaying HighContrast Scenes", Drago et al., 2003 // "Adaptive Logarithmic Mapping For Displaying HighContrast Scenes", Drago et al., 2003
class CV_EXPORTS_W TonemapDrago : public Tonemap class CV_EXPORTS_W TonemapDrago : public Tonemap
{ {
public: public:
CV_WRAP virtual float getSaturation() const = 0; CV_WRAP virtual float getSaturation() const = 0;
CV_WRAP virtual void setSaturation(float saturation) = 0; CV_WRAP virtual void setSaturation(float saturation) = 0;
CV_WRAP virtual float getBias() const = 0; CV_WRAP virtual float getBias() const = 0;
CV_WRAP virtual void setBias(float bias) = 0; CV_WRAP virtual void setBias(float bias) = 0;
}; };
CV_EXPORTS_W Ptr<TonemapDrago> createTonemapDrago(float gamma = 1.0f, float saturation = 1.0f, float bias = 0.85f); CV_EXPORTS_W Ptr<TonemapDrago> createTonemapDrago(float gamma = 1.0f, float saturation = 1.0f, float bias = 0.85f);
// "Fast Bilateral Filtering for the Display of High-Dynamic-Range Images", Durand, Dorsey, 2002 // "Fast Bilateral Filtering for the Display of High-Dynamic-Range Images", Durand, Dorsey, 2002
class CV_EXPORTS_W TonemapDurand : public Tonemap class CV_EXPORTS_W TonemapDurand : public Tonemap
{ {
public: public:
CV_WRAP virtual float getSaturation() const = 0; CV_WRAP virtual float getSaturation() const = 0;
CV_WRAP virtual void setSaturation(float saturation) = 0; CV_WRAP virtual void setSaturation(float saturation) = 0;
CV_WRAP virtual float getContrast() const = 0; CV_WRAP virtual float getContrast() const = 0;
CV_WRAP virtual void setContrast(float contrast) = 0; CV_WRAP virtual void setContrast(float contrast) = 0;
CV_WRAP virtual float getSigmaSpace() const = 0; CV_WRAP virtual float getSigmaSpace() const = 0;
CV_WRAP virtual void setSigmaSpace(float sigma_space) = 0; CV_WRAP virtual void setSigmaSpace(float sigma_space) = 0;
CV_WRAP virtual float getSigmaColor() const = 0; CV_WRAP virtual float getSigmaColor() const = 0;
CV_WRAP virtual void setSigmaColor(float sigma_color) = 0; CV_WRAP virtual void setSigmaColor(float sigma_color) = 0;
}; };
CV_EXPORTS_W Ptr<TonemapDurand> CV_EXPORTS_W Ptr<TonemapDurand>
createTonemapDurand(float gamma = 1.0f, float contrast = 4.0f, float saturation = 1.0f, float sigma_space = 2.0f, float sigma_color = 2.0f); createTonemapDurand(float gamma = 1.0f, float contrast = 4.0f, float saturation = 1.0f, float sigma_space = 2.0f, float sigma_color = 2.0f);
// "Dynamic Range Reduction Inspired by Photoreceptor Physiology", Reinhard, Devlin, 2005 // "Dynamic Range Reduction Inspired by Photoreceptor Physiology", Reinhard, Devlin, 2005
class CV_EXPORTS_W TonemapReinhard : public Tonemap class CV_EXPORTS_W TonemapReinhard : public Tonemap
{ {
public: public:
CV_WRAP virtual float getIntensity() const = 0; CV_WRAP virtual float getIntensity() const = 0;
CV_WRAP virtual void setIntensity(float intensity) = 0; CV_WRAP virtual void setIntensity(float intensity) = 0;
CV_WRAP virtual float getLightAdaptation() const = 0; CV_WRAP virtual float getLightAdaptation() const = 0;
CV_WRAP virtual void setLightAdaptation(float light_adapt) = 0; CV_WRAP virtual void setLightAdaptation(float light_adapt) = 0;
CV_WRAP virtual float getColorAdaptation() const = 0; CV_WRAP virtual float getColorAdaptation() const = 0;
CV_WRAP virtual void setColorAdaptation(float color_adapt) = 0; CV_WRAP virtual void setColorAdaptation(float color_adapt) = 0;
}; };
CV_EXPORTS_W Ptr<TonemapReinhard> CV_EXPORTS_W Ptr<TonemapReinhard>
createTonemapReinhard(float gamma = 1.0f, float intensity = 0.0f, float light_adapt = 1.0f, float color_adapt = 0.0f); createTonemapReinhard(float gamma = 1.0f, float intensity = 0.0f, float light_adapt = 1.0f, float color_adapt = 0.0f);
// "Perceptual Framework for Contrast Processing of High Dynamic Range Images", Mantiuk et al., 2006 // "Perceptual Framework for Contrast Processing of High Dynamic Range Images", Mantiuk et al., 2006
class CV_EXPORTS_W TonemapMantiuk : public Tonemap class CV_EXPORTS_W TonemapMantiuk : public Tonemap
{ {
public: public:
CV_WRAP virtual float getScale() const = 0; CV_WRAP virtual float getScale() const = 0;
CV_WRAP virtual void setScale(float scale) = 0; CV_WRAP virtual void setScale(float scale) = 0;
CV_WRAP virtual float getSaturation() const = 0; CV_WRAP virtual float getSaturation() const = 0;
CV_WRAP virtual void setSaturation(float saturation) = 0; CV_WRAP virtual void setSaturation(float saturation) = 0;
}; };
CV_EXPORTS_W Ptr<TonemapMantiuk> CV_EXPORTS_W Ptr<TonemapMantiuk>
createTonemapMantiuk(float gamma = 1.0f, float scale = 0.7f, float saturation = 1.0f); createTonemapMantiuk(float gamma = 1.0f, float scale = 0.7f, float saturation = 1.0f);
class CV_EXPORTS_W AlignExposures : public Algorithm class CV_EXPORTS_W AlignExposures : public Algorithm
{ {
public: public:
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst, CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst,
InputArray times, InputArray response) = 0; InputArray times, InputArray response) = 0;
}; };
// "Fast, Robust Image Registration for Compositing High Dynamic Range Photographs from Handheld Exposures", Ward, 2003 // "Fast, Robust Image Registration for Compositing High Dynamic Range Photographs from Handheld Exposures", Ward, 2003
class CV_EXPORTS_W AlignMTB : public AlignExposures class CV_EXPORTS_W AlignMTB : public AlignExposures
{ {
public: public:
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst, CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst,
InputArray times, InputArray response) = 0; InputArray times, InputArray response) = 0;
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst) = 0; CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst) = 0;
CV_WRAP virtual Point calculateShift(InputArray img0, InputArray img1) = 0; CV_WRAP virtual Point calculateShift(InputArray img0, InputArray img1) = 0;
CV_WRAP virtual void shiftMat(InputArray src, OutputArray dst, const Point shift) = 0; CV_WRAP virtual void shiftMat(InputArray src, OutputArray dst, const Point shift) = 0;
CV_WRAP virtual void computeBitmaps(InputArray img, OutputArray tb, OutputArray eb) = 0; CV_WRAP virtual void computeBitmaps(InputArray img, OutputArray tb, OutputArray eb) = 0;
CV_WRAP virtual int getMaxBits() const = 0; CV_WRAP virtual int getMaxBits() const = 0;
CV_WRAP virtual void setMaxBits(int max_bits) = 0; CV_WRAP virtual void setMaxBits(int max_bits) = 0;
CV_WRAP virtual int getExcludeRange() const = 0; CV_WRAP virtual int getExcludeRange() const = 0;
CV_WRAP virtual void setExcludeRange(int exclude_range) = 0; CV_WRAP virtual void setExcludeRange(int exclude_range) = 0;
CV_WRAP virtual bool getCut() const = 0; CV_WRAP virtual bool getCut() const = 0;
CV_WRAP virtual void setCut(bool value) = 0; CV_WRAP virtual void setCut(bool value) = 0;
}; };
CV_EXPORTS_W Ptr<AlignMTB> createAlignMTB(int max_bits = 6, int exclude_range = 4, bool cut = true); CV_EXPORTS_W Ptr<AlignMTB> createAlignMTB(int max_bits = 6, int exclude_range = 4, bool cut = true);
class CV_EXPORTS_W CalibrateCRF : public Algorithm class CV_EXPORTS_W CalibrateCRF : public Algorithm
{ {
public: public:
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0; CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
}; };
// "Recovering High Dynamic Range Radiance Maps from Photographs", Debevec, Malik, 1997 // "Recovering High Dynamic Range Radiance Maps from Photographs", Debevec, Malik, 1997
class CV_EXPORTS_W CalibrateDebevec : public CalibrateCRF class CV_EXPORTS_W CalibrateDebevec : public CalibrateCRF
{ {
public: public:
CV_WRAP virtual float getLambda() const = 0; CV_WRAP virtual float getLambda() const = 0;
CV_WRAP virtual void setLambda(float lambda) = 0; CV_WRAP virtual void setLambda(float lambda) = 0;
CV_WRAP virtual int getSamples() const = 0; CV_WRAP virtual int getSamples() const = 0;
CV_WRAP virtual void setSamples(int samples) = 0; CV_WRAP virtual void setSamples(int samples) = 0;
CV_WRAP virtual bool getRandom() const = 0; CV_WRAP virtual bool getRandom() const = 0;
CV_WRAP virtual void setRandom(bool random) = 0; CV_WRAP virtual void setRandom(bool random) = 0;
}; };
CV_EXPORTS_W Ptr<CalibrateDebevec> createCalibrateDebevec(int samples = 70, float lambda = 10.0f, bool random = false); CV_EXPORTS_W Ptr<CalibrateDebevec> createCalibrateDebevec(int samples = 70, float lambda = 10.0f, bool random = false);
// "Dynamic range improvement through multiple exposures", Robertson et al., 1999 // "Dynamic range improvement through multiple exposures", Robertson et al., 1999
class CV_EXPORTS_W CalibrateRobertson : public CalibrateCRF class CV_EXPORTS_W CalibrateRobertson : public CalibrateCRF
{ {
public: public:
CV_WRAP virtual int getMaxIter() const = 0; CV_WRAP virtual int getMaxIter() const = 0;
CV_WRAP virtual void setMaxIter(int max_iter) = 0; CV_WRAP virtual void setMaxIter(int max_iter) = 0;
CV_WRAP virtual float getThreshold() const = 0; CV_WRAP virtual float getThreshold() const = 0;
CV_WRAP virtual void setThreshold(float threshold) = 0; CV_WRAP virtual void setThreshold(float threshold) = 0;
CV_WRAP virtual Mat getRadiance() const = 0; CV_WRAP virtual Mat getRadiance() const = 0;
}; };
CV_EXPORTS_W Ptr<CalibrateRobertson> createCalibrateRobertson(int max_iter = 30, float threshold = 0.01f); CV_EXPORTS_W Ptr<CalibrateRobertson> createCalibrateRobertson(int max_iter = 30, float threshold = 0.01f);
class CV_EXPORTS_W MergeExposures : public Algorithm class CV_EXPORTS_W MergeExposures : public Algorithm
{ {
public: public:
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
InputArray times, InputArray response) = 0; InputArray times, InputArray response) = 0;
}; };
// "Recovering High Dynamic Range Radiance Maps from Photographs", Debevec, Malik, 1997 // "Recovering High Dynamic Range Radiance Maps from Photographs", Debevec, Malik, 1997
class CV_EXPORTS_W MergeDebevec : public MergeExposures class CV_EXPORTS_W MergeDebevec : public MergeExposures
{ {
public: public:
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
InputArray times, InputArray response) = 0; InputArray times, InputArray response) = 0;
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0; CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
}; };
CV_EXPORTS_W Ptr<MergeDebevec> createMergeDebevec(); CV_EXPORTS_W Ptr<MergeDebevec> createMergeDebevec();
// "Exposure Fusion", Mertens et al., 2007 // "Exposure Fusion", Mertens et al., 2007
class CV_EXPORTS_W MergeMertens : public MergeExposures class CV_EXPORTS_W MergeMertens : public MergeExposures
{ {
public: public:
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
InputArray times, InputArray response) = 0; InputArray times, InputArray response) = 0;
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst) = 0; CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst) = 0;
CV_WRAP virtual float getContrastWeight() const = 0; CV_WRAP virtual float getContrastWeight() const = 0;
CV_WRAP virtual void setContrastWeight(float contrast_weiht) = 0; CV_WRAP virtual void setContrastWeight(float contrast_weiht) = 0;
CV_WRAP virtual float getSaturationWeight() const = 0; CV_WRAP virtual float getSaturationWeight() const = 0;
CV_WRAP virtual void setSaturationWeight(float saturation_weight) = 0; CV_WRAP virtual void setSaturationWeight(float saturation_weight) = 0;
CV_WRAP virtual float getExposureWeight() const = 0; CV_WRAP virtual float getExposureWeight() const = 0;
CV_WRAP virtual void setExposureWeight(float exposure_weight) = 0; CV_WRAP virtual void setExposureWeight(float exposure_weight) = 0;
}; };
CV_EXPORTS_W Ptr<MergeMertens> CV_EXPORTS_W Ptr<MergeMertens>
createMergeMertens(float contrast_weight = 1.0f, float saturation_weight = 1.0f, float exposure_weight = 0.0f); createMergeMertens(float contrast_weight = 1.0f, float saturation_weight = 1.0f, float exposure_weight = 0.0f);
// "Dynamic range improvement through multiple exposures", Robertson et al., 1999 // "Dynamic range improvement through multiple exposures", Robertson et al., 1999
class CV_EXPORTS_W MergeRobertson : public MergeExposures class CV_EXPORTS_W MergeRobertson : public MergeExposures
{ {
public: public:
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
InputArray times, InputArray response) = 0; InputArray times, InputArray response) = 0;
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0; CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
}; };
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_EXPORTS_W void decolor( InputArray src, OutputArray grayscale, OutputArray color_boost);
@ -328,9 +328,6 @@ CV_EXPORTS_W Ptr<MergeRobertson> createMergeRobertson();
CV_EXPORTS_W void stylization(InputArray src, OutputArray dst, float sigma_s = 60, CV_EXPORTS_W void stylization(InputArray src, OutputArray dst, float sigma_s = 60,
float sigma_r = 0.45); float sigma_r = 0.45);
CV_EXPORTS_W void edgeEnhance(InputArray src, OutputArray dst, float sigma_s = 60,
float sigma_r = 0.45);
} // cv } // cv
#endif #endif

View File

@ -74,6 +74,13 @@ class Decolor
void grayImContruct(vector <double> &wei, Mat img, Mat &Gray); void grayImContruct(vector <double> &wei, Mat img, Mat &Gray);
}; };
int round_num(double a);
int round_num(double a)
{
return int(a + 0.5);
}
double Decolor::energyCalcu(vector <double> &Cg, vector < vector <double> > &polyGrad, vector <double> &wei) double Decolor::energyCalcu(vector <double> &Cg, vector < vector <double> > &polyGrad, vector <double> &wei)
{ {
vector <double> energy; vector <double> energy;
@ -228,7 +235,7 @@ void Decolor::weak_order(Mat img, vector <double> &alf)
if((h + w) > 800) if((h + w) > 800)
{ {
sizefactor = (double)800/(h+w); sizefactor = (double)800/(h+w);
resize(img,img,Size(round(h*sizefactor),round(w*sizefactor))); resize(img,img,Size(round_num(h*sizefactor),round_num(w*sizefactor)));
} }
Mat curIm = Mat(img.size(),CV_32FC1); Mat curIm = Mat(img.size(),CV_32FC1);
@ -304,7 +311,7 @@ void Decolor::grad_system(Mat img, vector < vector < double > > &polyGrad,
if((h + w) > 800) if((h + w) > 800)
{ {
sizefactor = (double)800/(h+w); sizefactor = (double)800/(h+w);
resize(img,img,Size(round(h*sizefactor),round(w*sizefactor))); resize(img,img,Size(round_num(h*sizefactor),round_num(w*sizefactor)));
} }
h = img.size().height; h = img.size().height;

View File

@ -151,7 +151,6 @@ void cv::stylization(InputArray _src, OutputArray _dst, float sigma_s, float sig
int h = img.size().height; int h = img.size().height;
int w = img.size().width; int w = img.size().width;
int channel = img.channels();
Mat res = Mat(h,w,CV_32FC3); Mat res = Mat(h,w,CV_32FC3);
Mat magnitude = Mat(h,w,CV_32FC1); Mat magnitude = Mat(h,w,CV_32FC1);
@ -159,7 +158,7 @@ void cv::stylization(InputArray _src, OutputArray _dst, float sigma_s, float sig
Domain_Filter obj; Domain_Filter obj;
obj.filter(img, res, sigma_s, sigma_r, NORMCONV_FILTER); obj.filter(img, res, sigma_s, sigma_r, NORMCONV_FILTER);
obj.find_magnitude(res,magnitude,2); obj.find_magnitude(res,magnitude);
Mat stylized = Mat(h,w,CV_32FC3); Mat stylized = Mat(h,w,CV_32FC3);
@ -172,31 +171,3 @@ void cv::stylization(InputArray _src, OutputArray _dst, float sigma_s, float sig
stylized.convertTo(dst,CV_8UC3,255); stylized.convertTo(dst,CV_8UC3,255);
} }
void cv::edgeEnhance(InputArray _src, OutputArray _dst, float sigma_s, float sigma_r)
{
Mat I = _src.getMat();
_dst.create(I.size(), CV_8UC1);
Mat dst = _dst.getMat();
Mat img = Mat(I.size(),CV_32FC3);
I.convertTo(img,CV_32FC3,1.0/255.0);
Mat orig = img.clone();
int h = img.size().height;
int w = img.size().width;
Mat res = Mat(h,w,CV_32FC3);
Mat magnitude = Mat(h,w,CV_32FC1);
Mat mag8 = Mat(h,w,CV_32FC1);
Domain_Filter obj;
obj.filter(img, res, sigma_s, sigma_r, NORMCONV_FILTER);
obj.find_magnitude(res,magnitude,1);
magnitude.convertTo(dst,CV_8UC1,255);
}

View File

@ -61,7 +61,7 @@ class Domain_Filter
void getGradienty( const Mat &img, Mat &gy); void getGradienty( const Mat &img, Mat &gy);
void diffx(const Mat &img, Mat &temp); void diffx(const Mat &img, Mat &temp);
void diffy(const Mat &img, Mat &temp); void diffy(const Mat &img, Mat &temp);
void find_magnitude(Mat &img, Mat &mag, int flags); void find_magnitude(Mat &img, Mat &mag);
void compute_boxfilter(Mat &output, Mat &hz, Mat &psketch, float radius); void compute_boxfilter(Mat &output, Mat &hz, Mat &psketch, float radius);
void compute_Rfilter(Mat &O, Mat &horiz, float sigma_h); void compute_Rfilter(Mat &O, Mat &horiz, float sigma_h);
void compute_NCfilter(Mat &O, Mat &horiz, Mat &psketch, float radius); void compute_NCfilter(Mat &O, Mat &horiz, Mat &psketch, float radius);
@ -131,7 +131,7 @@ void Domain_Filter::getGradienty( const Mat &img, Mat &gy)
} }
} }
void Domain_Filter::find_magnitude(Mat &img, Mat &mag, int flags) void Domain_Filter::find_magnitude(Mat &img, Mat &mag)
{ {
int h = img.rows; int h = img.rows;
int w = img.cols; int w = img.cols;
@ -148,28 +148,14 @@ void Domain_Filter::find_magnitude(Mat &img, Mat &mag, int flags)
Mat magXB = Mat(h, w, CV_32FC1); Mat magXB = Mat(h, w, CV_32FC1);
Mat magYB = Mat(h, w, CV_32FC1); Mat magYB = Mat(h, w, CV_32FC1);
if(flags == 1) Sobel(planes[0], magXR, CV_32FC1, 1, 0, 3);
{ Sobel(planes[0], magYR, CV_32FC1, 0, 1, 3);
getGradientx(planes[0], magXR);
getGradienty(planes[0], magYR);
getGradientx(planes[1], magXG); Sobel(planes[1], magXG, CV_32FC1, 1, 0, 3);
getGradienty(planes[1], magYG); Sobel(planes[1], magYG, CV_32FC1, 0, 1, 3);
getGradientx(planes[2], magXR); Sobel(planes[2], magXB, CV_32FC1, 1, 0, 3);
getGradienty(planes[2], magYR); Sobel(planes[2], magYB, CV_32FC1, 0, 1, 3);
}
else if(flags == 2)
{
Sobel(planes[0], magXR, CV_32FC1, 1, 0, 3);
Sobel(planes[0], magYR, CV_32FC1, 0, 1, 3);
Sobel(planes[1], magXG, CV_32FC1, 1, 0, 3);
Sobel(planes[1], magYG, CV_32FC1, 0, 1, 3);
Sobel(planes[2], magXB, CV_32FC1, 1, 0, 3);
Sobel(planes[2], magYB, CV_32FC1, 0, 1, 3);
}
Mat mag1 = Mat(h,w,CV_32FC1); Mat mag1 = Mat(h,w,CV_32FC1);
Mat mag2 = Mat(h,w,CV_32FC1); Mat mag2 = Mat(h,w,CV_32FC1);

16
modules/photo/test/test_npr.cpp Normal file → Executable file
View File

@ -128,19 +128,3 @@ TEST(Photo_NPR_Stylization, regression)
imwrite(folder + "stylized.png", result); imwrite(folder + "stylized.png", result);
} }
TEST(Photo_NPR_EdgeEnhance, regression)
{
string folder = string(cvtest::TS::ptr()->get_data_path()) + "npr/";
string original_path = folder + "test1.png";
Mat source = imread(original_path, IMREAD_COLOR);
ASSERT_FALSE(source.empty()) << "Could not load input image " << original_path;
Mat result;
edgeEnhance(source,result);
imwrite(folder + "edge_enhanced.png", result);
}

View File

@ -43,7 +43,7 @@ int main()
cout << "6) Texture Flattening " << endl; cout << "6) Texture Flattening " << endl;
cout << endl; cout << endl;
cout << "Press number 1-6 to choose from above techniques: "; cout << "Press number 1-6 to choose from above techniques: ";
int num; int num = 1;
cin >> num; cin >> num;
cout << endl; cout << endl;

View File

@ -11,7 +11,6 @@
* 2) Detail Enhancement * 2) Detail Enhancement
* 3) Pencil sketch/Color Pencil Drawing * 3) Pencil sketch/Color Pencil Drawing
* 4) Stylization * 4) Stylization
* 5) Edge Enhancement
* *
*/ */
@ -57,10 +56,9 @@ int main(int argc, char* argv[])
cout << "2) Detail Enhancement" << endl; cout << "2) Detail Enhancement" << endl;
cout << "3) Pencil sketch/Color Pencil Drawing" << endl; cout << "3) Pencil sketch/Color Pencil Drawing" << endl;
cout << "4) Stylization" << endl; cout << "4) Stylization" << endl;
cout << "5) Edge Enhancement" << endl;
cout << endl; cout << endl;
cout << "Press number 1-5 to choose from above techniques: "; cout << "Press number 1-4 to choose from above techniques: ";
cin >> num; cin >> num;
@ -94,11 +92,5 @@ int main(int argc, char* argv[])
stylization(I,img); stylization(I,img);
imshow("Stylization",img); imshow("Stylization",img);
} }
else if(num == 5)
{
edgeEnhance(I,img);
imshow("Edge Enhance",img);
}
waitKey(0); waitKey(0);
} }