Reference:
PS image effects, nonlinear filters
Define head function#ifndef ps_algorithm_h_included#define ps_algorithm_h_included#include <iostream># Include <string> #include "cv.h" #include "highgui.h" #include "cxmat.hpp" #include "cxcore.hpp" using namespace std Using namespace Cv;void show_image (mat&, const string &); #endif//Ps_algorithm_h_included/*this program would ge Nerate "Paint" effect.*/#include "ps_algorithm.h" #include <time.h>using namespace std;using namespace Cv;int main (void) {string Img_name ("4.jpg"); Mat image_in; Image_in=imread (Img_name); Show_image (image_in, img_name); Mat image_out (Image_in.size (), CV_32FC3); Image_in.convertto (Image_out, CV_32FC3); Mat R (Image_in.size (), CV_32FC1); Mat g (Image_in.size (), CV_32FC1); Mat B (Image_in.size (), CV_32FC1); Mat Rgb[]={b,g,r}; Split (Image_out, RGB); int p_size=3; Mat Sub_mat; Double Min_val; for (int i=p_size, i<image_in.rows-p_size-1; i++) {for (int j=p_size; j<image_in.cols-1-p_Size J + +) {for (int k=0; k<3; k++) {sub_mat=rgb[k].operator () (Range (i-p_size,i+ P_size), Range (j-p_size,j+p_size)); Cv::minmaxloc (Sub_mat, &min_val); Image_out.at<vec3f> (I,J) [K]=min_val; }/* Sub_mat=b.operator () (Range (i-p_size,i+p_size), Range (j-p_size,j+p_size)); Cv::minmaxloc (Sub_mat, min_val); Image_out.at<vec3f> (I,J) [0]=*min_val; Sub_mat=g.operator () (Range (i-p_size,i+p_size), Range (j-p_size,j+p_size)); Cv::minmaxloc (Sub_mat, min_val); Image_out.at<vec3f> (I,J) [1]=*min_val; Sub_mat=r.operator () (Range (i-p_size,i+p_size), Range (j-p_size,j+p_size)); Cv::minmaxloc (Sub_mat, min_val); Image_out.at<vec3f> (I,J) [2]=*min_val; */}} image_out=image_out/255.0; Show_image (Image_out, "out"); Imwrite ("Out.jpg", image_out*255); Waitkey ();cout<< "All are well." <<endl;} Define the show image#include "ps_algorithm.h" #include <iostream> #include <string>using namespace std; Using namespace Cv;void show_image (mat& Image, const string& str) {Namedwindow (Str.c_str (), cv_window_autosize) ; Imshow (Str.c_str (), Image);}
Original
opencv--Nonlinear Filter