【OpenCV】仿照小蚂蚁实现图像增强、滤波
项目地址:
CodeChina kissDicomViewer
详细介绍:
CSDN 一个简单的 DICOM 浏览器
仿照小蚂蚁实现 sharpen smooth Edge Emboss
小蚂蚁有个功能是ImageFilters
,模仿小蚂蚁也简单实现了一下。为了方便学习以及后续调整做成插件的形式。下边展示是小蚂蚁的四种Filters
和自己目前实现的。利用了Qt
的QtPlugin
,如果对前处理结果不满意直接修改插件即可。
实现方法
图像前处理思路就是每次再界面上刷新图片时调用一个模板函数QPixmap(const QPixmap &, QWidget *)
,实现最后渲染不同效果。
sharpen smooth Edge Emboss
实现的话直接用的现成API
QPixmap Sharpening(const QPixmap &pix, QWidget * ) {QImage image;image = pix.toImage();cv::Mat src = QImage2cvMat(image.convertToFormat(QImage::Format_ARGB32));cv::Mat dst;cv::Mat kern = (cv::Mat_<char>(3, 3) <<0, -1, 0,-1, 5, -1,0, -1, 0);filter2D(src, dst, src.depth(), kern);image = Mat2QImage(dst);return QPixmap::fromImage(image);
}QPixmap Smooth(const QPixmap &pix, QWidget * ) {QImage image;image = pix.toImage();cv::Mat src = QImage2cvMat(image.convertToFormat(QImage::Format_ARGB32));cv::Mat dst;GaussianBlur(src, dst, cv::Size(7, 7), 0, 0);image = Mat2QImage(dst);return QPixmap::fromImage(image);
}QPixmap Edge(const QPixmap &pix, QWidget * ) {QImage image;image = pix.toImage();cv::Mat src = QImage2cvMat(image.convertToFormat(QImage::Format_ARGB32));cv::Mat dst;//cv::Mat src_gray, detected_edges;dst.create(src.size(), src.type());dst = cv::Scalar::all(0);if (src.channels() != 1) {cvtColor(src, src_gray, cv::COLOR_BGR2GRAY); // 转换灰度图像} else {src_gray = src;}blur(src_gray, detected_edges, cv::Size(3, 3));cv::Canny(detected_edges, detected_edges, 3, 3 * 3, 7);src.copyTo(dst, detected_edges);//image = Mat2QImage(dst);return QPixmap::fromImage(image);
}QPixmap Emboss(const QPixmap &pix, QWidget * ) {QImage image;image = pix.toImage();cv::Mat src = QImage2cvMat(image.convertToFormat(QImage::Format_ARGB32));cv::Mat dst;cv::Mat kern = (cv::Mat_<char>(3, 3) <<-2, -1, 0,-1, 1, 1,0, 1, 2);filter2D(src, dst, src.depth(), kern);image = Mat2QImage(dst);return QPixmap::fromImage(image);
}
插件设计
KISS Dicom Viewer:插件实现方法
【OpenCV】仿照小蚂蚁实现图像增强、滤波相关推荐
- opencv 一种灰度图像增强方式
opencv 取灰度图颜色范围 opencv有自己的图像增强函数,这里提出一种定义范围颜色的增强方式, 下面是opencv自带直方图增强的函数,equalizeHist,如果需要三通道增强,可以分别取 ...
- OpenCV入门系列 —— boxFilter盒子滤波
OpenCV入门系列 -- boxFilter盒子滤波 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识 ...
- 《OpenCv视觉之眼》Python图像处理五 :Opencv图像去噪处理之均值滤波、方框滤波、中值滤波和高斯滤波
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
- OpenCV入门系列 —— bilateralFilter双边滤波
OpenCV入门系列 -- bilateralFilter双边滤波 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也 ...
- matlab中的中值滤波medfilt2()和opencv中的中值滤波medianblur()是不同的
matlab中的中值滤波medfilt2()和opencv中的中值滤波medianblur()做出的结果不同,如图所示: Opencv处理结果如下: Matlab处理结果如下: Opencv处理过程中 ...
- OpenCV,马赛克 常用图像增强算法的实现
import cv2 import numpy as npdef salt(img, img2, n):noff = int((n - 1) / 2)for i in range(noff,img.s ...
- 使用Python+OpenCV+GAN实现车牌图像增强
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|AI算法与图像处理 在好莱坞的犯罪电影中,我们经常看到侦 ...
- opencv(4)图像滤波
都是一些常用函数,但是可能太常用了,里面的一些关键点,没做过多的研究,今天主要对函数中特殊的地方做出分析 1.cvSmooth 图像滤波 CV_BLUR_NO_SCALE (简单不带尺度变换的模糊) ...
- 【OpenCV】5种图像滤波辨析:方框、均值、高斯、中值、双边
from:http://www.07net01.com/2015/12/1003192.html 图像滤波 什么是图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预 ...
最新文章
- linux docker 权限划分介绍 capabilities
- 关于选择哪些村庄试点新农村建设的讨论
- 把知识变成图谱一共需要花几步?89页全网最全清华知识图谱报告-学习笔记
- php开启openssl的方法
- Python是什么?Python能干什么?一篇文章让你对Python了如指掌!!
- 图论 —— 图的连通性 —— Tarjan 求割点与桥
- 95-50-040-java.nio.channels-NIO-NIO之Buffer(缓冲区)
- mmapcopy函数的编写
- 杀死提交的hadoop任务
- html语义化标签_9.28晨会分享 常见的HTML5语义化标签、实体字符
- 通信中间件 Fast DDS 基础概念简述与通信示例
- 锐捷云终端计算机,锐捷RG-RCM1000-Office智能云终端控制器
- 小程序生命周期钩子函数
- 普元EOS常见问题及处理经验
- JAVA计算机毕业设计大学生旅游拼团网站Mybatis+源码+数据库+lw文档+系统+调试部署
- COMSOL 固体力学 第一主应力、第二主应力、第三主应力、径向应力、环向应力、切向应力 截面一维曲线
- OV7670 FIFO 30W摄像头介绍(三) --- STM32F103驱动OV7670代码介绍
- 【Unicode编码表】UniCode编码表+转化器
- prince2 成功的项目管理_学员心得 | 宋文彬:学习PRINCE2的心路历程
- 【杂】孔明锁6根解法 九连环的拆卸方法及还原