程序完成 “毛玻璃” 特效, 不过边缘没有处理,使得最终的图像有黑边。

不过,有了黑边,感觉效果也不错,所以这个bug 没有管。

#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
"diffuse or groundglass " 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_2(Image_in.size(), CV_32FC3);
Image_in.convertTo( Image_2, CV_32FC3); Mat Image_Blur(Image_in.size(), CV_32FC3);
GaussianBlur(Image_2, Image_Blur, Size (5, 5), 0);
Image_Blur=Image_Blur/255;
Show_Image(Image_Blur, "blur"); int nrows=Image_Blur.rows;
int ncols=Image_Blur.cols; cout<<"Rows: "<<nrows<<endl;
cout<<"Cols: "<<ncols<<endl; Mat Image_Out(Image_Blur.size(), CV_32FC3); int P_size; P_size=3;
float k1, k2;
float m, n;
int h, w; srand( (unsigned)time(NULL) ); for (int i=0+P_size; i<nrows-P_size; i++ )
for (int j=0+P_size; j<ncols-P_size; j++ )
{ k1=(double)((rand() % 100))/100.0-0.5;
k2=(double)((rand() % 100))/100.0-0.5; m=(k1*(P_size*2-1));
n=(k2*(P_size*2-1)); h=(int)(i+m)% nrows;
w=(int)(j+n)% ncols; Image_Out.at<Vec3f>(i,j)=Image_Blur.at<Vec3f>(h,w); } Show_Image(Image_Out, "out.jpg"); imwrite( "Out.jpg",Image_Out*255); waitKey();
cout<<"All is well."<<endl; } #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. yii在TbGridView的td里面加入相应的下拉选项(转)
  2. interviewbit :Min Steps in Infinite GridBookmark Suggest Edit
  3. jquery-validation 学习总结
  4. Android打包失败Proguard returned with error code 1. See console
  5. ASP.NET 5应用是如何运行的(3)
  6. c++字体对齐
  7. 可以有效防护XSS,sql注射,代码执行,文件包含等多种高危漏洞。
  8. ios 贝塞尔画图
  9. WGCNA算法研究笔记
  10. JS对select动态添加option操作 (三级联动) (搜索拼接)
  11. 【递归】hex2dec
  12. C++语法小技巧
  13. 使用mysql将手机号、身份证号等字段进行脱敏
  14. centos7怎么查看、打开和关闭防火墙
  15. 【linux】之查看物理CPU个数、核数、逻辑CPU个数
  16. web端权限维持【好文】
  17. B1029 旧键盘 (20 分)
  18. Python Threading多线程简单例子
  19. zookeeper 大量连接断开重连原因排查
  20. 【week3】词频统计 单元测试

热门文章

  1. 使用Intent传递对象
  2. 破解Oracle ERP 密码
  3. For oracle databases, if the top showing the oracle database, then oracle process is using the top c
  4. Dynamics CRM2015 页面导航栏顶部全局快速查找功能配置
  5. ubuntu mysql表名大小写区分
  6. 14 fragment 创建
  7. 【一天一道LeetCode】#374. Guess Number Higher or Lower
  8. 所谓 Spinner 组件
  9. 【java虚拟机系列】java虚拟机系列之JVM总述
  10. UI设计--大象无形