#include<iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;//对图像进行锐化的3种方法void sharp1(Mat&image,Mat &result);//image0代表原图,image代表结果图。
void sharp2(Mat&image,Mat &result);
void sharp3(Mat&image,Mat &result);int main()
{Mat image0 = imread("大教堂.jpg");resize(image0,image0,Size(),0.4,0.4);//缩放图像为原来的0.4倍。imshow("原图",image0);Mat image1;Mat image2;Mat image3;sharp3(image0,image1);sharp3(image0,image2);sharp3(image0,image3);imshow("结果1",image1);imshow("结果2",image2);imshow("结果3",image3);waitKey(0);return 0;
}void sharp1(Mat& image0,Mat&image)//先用at函数来进行,最直观也是最简单的。
{image.create(image0.size(),image0.type());//两个大小相同。for (int i = 1; i < image.rows-1; ++i){for (int j = 1; j < image.cols-1; ++j){image.at<Vec3b>(i, j)[0] = saturate_cast<uchar>(5 * image0.at<Vec3b>(i, j)[0] - image0.at<Vec3b>(i-1, j)[0]- image0.at<Vec3b>(i, j-1)[0] - image0.at<Vec3b>(i+1, j)[0]- image0.at<Vec3b>(i, j+1)[0]);image.at<Vec3b>(i, j)[1] = saturate_cast<uchar>(5 * image0.at<Vec3b>(i, j)[1] - image0.at<Vec3b>(i-1, j)[1]- image0.at<Vec3b>(i, j-1)[1] - image0.at<Vec3b>(i+1, j)[1]- image0.at<Vec3b>(i, j+1)[1]);image.at<Vec3b>(i, j)[2] = saturate_cast<uchar>(5 * image0.at<Vec3b>(i, j)[2] - image0.at<Vec3b>(i-1, j)[2]- image0.at<Vec3b>(i, j-1)[2] - image0.at<Vec3b>(i+1, j)[2]- image0.at<Vec3b>(i, j+1)[2]);}}image.row(0).setTo(Scalar::all(0));image.row(image.rows-1).setTo(Scalar::all(0));image.col(0).setTo(Scalar::all(0));image.row(image.cols-1).setTo(Scalar::all(0));}void sharp2(Mat& image0,Mat&image)//用指针的方法来进行。
{image.create(image0.size(),image0.type());int x = image.channels();for (int i = 1; i < image.rows - 1; ++i){const uchar* pre = image0.ptr<uchar>(i-1);//上一行的头一个像素地址。const uchar* current = image0.ptr<uchar>(i);const uchar* nex = image0.ptr<uchar>(i+1);uchar* p = image.ptr<uchar>(i);//结果图的最后一个指针。for (int j = 1; j < x * (image.cols-1); ++j){p[j] = saturate_cast<uchar>(5 * current[j] - current[j - x] - current[j + x] - pre[j] - nex[j]);}}image.col(0).setTo(Scalar::all(0));image.col(image.cols-1).setTo(Scalar::all(0));image.row(0).setTo(Scalar::all(0));image.row(image.rows-1).setTo(Scalar::all(0));}void sharp3(Mat& image0,Mat& image)//我们利用卷积核和filter2D的函数来进行。
{Mat kernel(3, 3, CV_32F,Scalar::all(0));kernel.at<float>(0,1)=-1;kernel.at<float>(1,1)=5;kernel.at<float>(1,0)=-1;kernel.at<float>(1,2)=-1;kernel.at<float>(2,1)=-1;filter2D(image0,image,image.depth(),kernel);//系统自带。
}

三种方法进行图片锐化相关推荐

  1. 三种方法使图片变成灰色(前端技术)

    1.CSS Filter 使用CSS过滤器属性可能是最简单的方法把图像变成灰度.以往,IE浏览器有一个专有的CSS属性称为过滤应用自定义效果包括灰度. 现在,过滤器属性是CSS3规范的一部分,并支持在 ...

  2. C# 中Bitmap图像处理含增强对比度的三种方法

    Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetPix ...

  3. 测试Python下载图片的三种方法

    简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理.本文测试了urllib, request两个软件包对图片进行下载效果.如果图片原网页有了防止下载机制,是无法下载图片. ...

  4. Android TextView里直接显示图片的三种方法

    方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系.一般如果字体是在图片上重叠的推荐这样写.时间关系,这个不付源码了. 方法二:利用Text ...

  5. mac 如何查看anaconda的路径_Mac OS如何直接查看gif图片?分享MAC直接查看gif图片的三种方法...

    想必许多刚入手Mac的用户在浏览GIF图片文件时,会发现Mac不能直接打开GIF,因此有的用户为了方便查看还特意去下载了GIF的图片查看器,其实在Mac中有多种能够直接打开GIF的方法,用户无需任何第 ...

  6. c# pictureBox1.Image的获得图片路径的三种方法 winform

    代码如下:c# pictureBox1.Image的获得图片路径的三种方法 winform 1.绝对路径: this.pictureBox2.Image=Image.FromFile("D: ...

  7. 图片怎么压缩图片大小_图片的体积怎么压缩?这三种方法你会吗?

    图片是我们在工作中经常要使用到的东西,在平时使用图片的时候相信大家都遇到过由于系统限制图片大小导致自己的图片无法上传的情况,这时候就需要对图片进行压缩了,把图片的体积降低到符合系统要求的大小,然后再进 ...

  8. 计算机怎么删除表格,电脑中删除Excel2010表格多余图片的三种方法

    为了让表格看起来更加直观,很多朋友都会在Excel中插入图片.那么,当我们大批量插入图片时,如果想要删除的话,应该怎么办呢?以下是系统城小编为您带来的电脑中删除Excel2010表格多余图片的三种方法 ...

  9. WPS如何转换成图片?三种方法帮你实现

    WPS如何转换成图片?三种方法帮你轻松实现!在大学中,大家完成老师布置的专业课作业都是通过使用电脑中的WPS制作完成.为了防止自己的作业遭到其他同学的私自窜改或是复制粘贴的抄袭.有的同学就会将自己的作 ...

最新文章

  1. DeviceEventEmitter 使用监听通知进行传值
  2. Java基础之IDE
  3. 数据结构--散列表 Hash Table
  4. Webpack之插件html webpack plugin
  5. Selenium自动化测试-文件上传
  6. wpf 界面加载 Command
  7. 使用idea进行Maven打包异常:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war
  8. 我35岁了,依然可以“横行职场”
  9. SCVMM2012 SP1 之添加非受信任Hyper-V
  10. 23个热门python爬虫项目,爬虫仍需谨慎,牢饭不是很香!!!
  11. 变砖的平板怎样重装android,台电平板电脑刷机教程,小编教你台电平板电脑怎么刷机...
  12. PMP第三节:项目管理过程
  13. 「好文分享」我为什么从Google 辞职开始为自己工作?
  14. python ——找出 每行中长度超过3的单词
  15. 漏洞平台之pikachu详细图文搭建教程
  16. 坚持是一种态度,公众号粉丝突破 1300 啦
  17. Gatekeeper代码导读
  18. Canal~1:canal原理
  19. db2 删除索引_你想要拥有自己的搜索引擎吗?
  20. 联发科处理器手机安装linux,BQ Aquaris Ubuntu 智能手机配 4.5 英寸屏幕四核CPU

热门文章

  1. 嵌入式系统概述及特点
  2. GOF23设计模式之适配器模式
  3. 2019年中国社交电商行业市场分析:社交电商巨头已浮出水面
  4. sp/计算机产品与流通,计算机产品与流通杂志
  5. 解决异常 Data truncation: Incorrect datetime value: '' for column 'ordertime'
  6. Questions_diary
  7. 计算机毕业设计谢辞怎么写,计算机论文致谢范文计算机专业本科毕业设计论文致谢写...
  8. 如何用python写一个答题程序_如何使用Python写一个百万英雄的答题辅助程序 (0) 简介...
  9. 网络调试助手的使用 调试TCP,UDP
  10. TCP的滑动窗口与拥塞窗口