先推荐界面比较丑,但是还不错的在线图片处理网站:

http://www168.lunapic.com/editor/

由于最近在做毕设了,结合前面关于图像处理和机器学习的操作,想做一些好玩的东西,其中有一部分需要构建一个模糊人脸库。一想到人脸照,大概都是超清晰的自拍(selfie)或者证件照,所以自然模糊的人脸好难找。。。

所以自己仿真。。做了一个小小的test set。。。

参杂了高斯模糊、失焦模糊、和运动模糊。。

opencv没有motion blur的filter

为了方便批量处理,写了一个小小小小的函数。。

 cv::Mat MotionBlur(cv::Mat srcImg, int filterSize) {
int size = filterSize;
cv::Mat filter = cv::Mat::zeros(size, size, CV_8UC1);
cv::Mat result = cv::Mat(srcImg.size(), srcImg.type());
for (int i = ; i < size; i++)filter.at<uchar>(i, i) = (uchar);
for (int i = ; i < filter.rows; i++) {
for (int j = ; j < filter.cols; j++) {
cout << (int)filter.at<uchar>(i, j) << " ";
}
cout << endl;
} int len = size / ; for (int r = ; r < srcImg.rows; r++) {
for (int c = ; c < srcImg.cols; c++) {
//mask
int red = , green = , blue = ;
for (int i = r - len; i <= r + len; i++) {
for (int j = c - len; j <= c + len; j++) {
if (i < || j < || i >= srcImg.rows || j >= srcImg.cols) continue;
blue += ((int)srcImg.at<cv::Vec3b>(i, j)[]) * ((int)filter.at<uchar>(i - (r - len), j - (c - len)));
green += ((int)srcImg.at<cv::Vec3b>(i, j)[]) * ((int)filter.at<uchar>(i - (r - len), j - (c - len)));
red += ((int)srcImg.at<cv::Vec3b>(i, j)[]) * ((int)filter.at<uchar>(i - (r - len), j - (c - len)));
}
} result.at<cv::Vec3b>(r, c)[] = (uchar)(blue / size);
result.at<cv::Vec3b>(r, c)[] = (uchar)(green / size);
result.at<cv::Vec3b>(r, c)[] = (uchar)(red / size);
}
} cv::imshow("motion blur", result);
cv::waitKey(); return result;
}

e.g.

filterSize = 9时, 角度45,矩阵如下

1 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0 0

0 0 0 1 0 0 0 0 0

0 0 0 0 1 0 0 0 0

0 0 0 0 0 1 0 0 0

0 0 0 0 0 0 1 0 0

0 0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 0 1

卷积过后还要归一化, 即 * 1/9

最新文章

  1. iOS开发系列--并行开发其实很容易
  2. JS弹出遮罩层
  3. jdk1.6安装
  4. 和为S的两个数VS和为S的连续正数序列
  5. centos7 docker1.12 私有仓库
  6. PDF.NET框架操作——工具应用(一)
  7. .net core demo &amp; docker images
  8. C语言setjmp函数使用
  9. MDN &gt; Web technology for developers &gt; HTTP
  10. IOS 调用系统相册或照相机tab按钮显示中文
  11. 《Java从入门到精通》src9-25
  12. margin 塌陷现象 与 注意事项
  13. 转载 JDK + Android-SDK + Python + MonkeyRunner 的安装
  14. 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试
  15. python开发基础之语法基础
  16. ABP框架(asp.net core 2.X+Vue)模板项目学习之路(二)--切换MySql数据库
  17. uva11827 处理下输入
  18. 手把手教你制作微信小程序,开源、免费、快速搞定
  19. VMWare 虚机迁移后Linux系统网卡启动问题
  20. linux iostat 性能指标说明(转)

热门文章

  1. 如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码)
  2. HNOI2008 GT考试 (KMP + 矩阵乘法)
  3. Css之cursor 属性
  4. 收集几个Android CalendarView非常用属性
  5. zepto.js 总结
  6. UVa 11584 Partitioning by Palindromes (简单DP)
  7. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时14&amp;&amp;15
  8. PHP empty()函数使用需要注意
  9. IT兄弟连 JavaWeb教程 使用Java同步机制对多线程同步
  10. 前端开发常用cmd命令