参考:

PS 图像特效,非线性滤波器

// 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 will generate
"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 is 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); }

原图

效果图

最新文章

  1. 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(四)
  2. 各个浏览器显示版本(IE,火狐)
  3. opencv+vs2010
  4. iOS8下bundle路径变更
  5. UML类图
  6. 基于SSH2的OA项目1.1_20161207_业务开发
  7. JSOI 2008 火星人prefix
  8. 日志记录到txt文件
  9. button等按钮onclientclick事件失效
  10. Ubuntu修改密码长度太短或太简单解决
  11. OC - 7.Foundation框架的简单介绍
  12. BAE 环境下配置 struts2 + spring + hibernate(SSH)(二)struts2
  13. flume【源码分析】分析Flume的启动过程
  14. Writing your first Django app, part 1(转)
  15. 【智能家居篇】wifi网络访问原理(下一个)——联想Association
  16. ural1613 For Fans of Statistics
  17. 蓝桥网试题 java 基础练习 杨辉三角形
  18. DLL 导出类
  19. gzip解压文件报错
  20. Android 仿携程活动列表边框布局

热门文章

  1. shader一些语义或术语的解释
  2. android--SDK Manager下载Connection to http://dl-ssl.google.com refused
  3. 如何通过js处理相同时间的信息整合到一起的问题
  4. window 怎么样让nginx开机自启动
  5. 简易bootloader重定位问题
  6. 从HttpServletRequest获取POST数据的代码
  7. html post
  8. JQuery 双击动态编辑
  9. 如何写PHP规范注释
  10. iOS 8以后 定位手动授权问题