具体的算法原理可以参考:

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
"Glowing Edge" 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 Image_2(Image_in.size(), CV_32FC3);
Image_in.convertTo( Image_2, CV_32FC3); Mat kernel;
Point anchor;
double delta;
int ddepth;
int kernel_size; ddepth=-1;
anchor=Point(-1,-1);
delta=0; kernel_size=3; Mat K_x;
Mat K_y; K_x=Mat::zeros(kernel_size, kernel_size, CV_32F);
K_y=Mat::zeros(kernel_size, kernel_size, CV_32F); float p,q; p=3; q=0; K_x.at<float>(0,0)=-1; K_x.at<float>(0,1)=0; K_x.at<float>(0,2)=1;
K_x.at<float>(1,0)=-p; K_x.at<float>(1,1)=q; K_x.at<float>(1,2)=p;
K_x.at<float>(2,0)=-1; K_x.at<float>(2,1)=0; K_x.at<float>(2,2)=1; K_y.at<float>(0,0)=-1; K_y.at<float>(0,1)=-p; K_y.at<float>(0,2)=-1;
K_y.at<float>(1,0)=0; K_y.at<float>(1,1)=q; K_y.at<float>(1,2)=0;
K_y.at<float>(2,0)=1; K_y.at<float>(2,1)=p; K_y.at<float>(2,2)=1; Mat Image_x(Image_in.size(), CV_32FC3);
Mat Image_y(Image_in.size(), CV_32FC3); cv::filter2D(Image_2, Image_x, ddepth, K_x);
cv::filter2D(Image_2, Image_y, ddepth, K_y); float alpha=0.5; Image_out=alpha*abs(Image_x)+(1-alpha)*abs(Image_y); Image_out=Image_out/255; 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. 学习python函数笔记之一
  2. iOS各版本图标尺寸汇总
  3. SpringHttpInvoker解析2-服务端实现
  4. 利用.htaccess实现伪静态方法
  5. FreeSWITCH的传真发送
  6. (.iso)光盘镜像文件的打开与安装
  7. Linux中Bash发现重大安全漏洞修改方法
  8. FileZilla ftp服务器安装
  9. Poco之ftp目录切换与创建
  10. 四轴飞行器1.5 各种PID对比分析及选择
  11. MVC 返回 view
  12. muduo 与 libevent2 吞吐量对照
  13. 利用css新属性appearance优化select下拉框
  14. 通过VNC Viewer使用VMware虚拟机的远程桌面连接
  15. 正规消息发送器-- ESFramework 4.0 进阶(06)
  16. 新版iTunes如何设置手机铃声
  17. 一个使用openGL渲染的炫丽Android动画库
  18. How to move lobsegment and lobindex to a different Tablespace
  19. Android style 继承
  20. python repr()和str()

热门文章

  1. shell命令执行hive脚本(hive交互,hive的shell编程)
  2. 【SSH系列】---Hibernate的基本映射
  3. 源码篇——Handler消息机制
  4. 利用CocoaHTTPServer实现wifi局域网传输文件到iphone
  5. 浅谈hibernate+入门实例
  6. 剑指Offer——线程同步volatile与synchronized详解
  7. String&amp;StringBuilder&amp;StringBuffer总结
  8. sublime text的Ctrl+alt+up快捷键失效问题解决
  9. C++中友元详解
  10. 后端分布式系列:分布式存储-HDFS NameNode 设计实现解析