_寒潭雁影
中科大IT向博士,熟悉MFC,C++,C等语言,参与过ffmpeg、机器视觉、并行计算、数据库等相关项目的研发和代码的编写http://blog.csdn.net/weixinhum为本人博客,上面记录了本人的一些技术总结
展开
-
引导滤波算法
引导滤波,是何凯明大神早期的作品。和双边滤波类似,它有“保边+平滑”的优秀特性,并且在图像锐化增强方面(原图-滤波图=高频特征图,权重高频特征图+权重。原创 2024-04-29 15:50:02 · 349 阅读 · 0 评论 -
均值滤波算法与SSE2指令集并行优化
均值滤波是经典的机器视觉方法,本篇将讨论如何对该算法进行优化,使得其比OpenCV的实现更快。原创 2024-04-04 18:52:49 · 369 阅读 · 0 评论 -
中值滤波算法与SSE2指令集并行优化
中值滤波算法是经典图像处理中极为常见的操作,一般我们通过调用OpenCV或者是Matlab直接进行使用,以至于有种它本来就很容易实现且速度很快的错觉。近来用到中值滤波算法,因为不想用到OpenCV库或者Matlab而对其实现研究了一番,才发现其中有很多值得注意的细节。下面我们结合着OpenCV的源码实现来讲。原创 2024-03-31 19:53:05 · 213 阅读 · 0 评论 -
OpenCV加载资源文件中的PNG图像资源(Windows平台)
OpenCV加载资源文件中的PNG图像资源(Windows平台)原创 2023-08-01 11:14:33 · 268 阅读 · 0 评论 -
OpenCV弹出窗体设置
使用OpenCV偶尔会用到其弹出窗体来显示图像,大部分情况看看算法处理的结果是够用的。然而有时希望用其作为程序的子窗口显示些不断刷新的信息就存在两个问题:1. 没有判断用户是否点击关闭窗口的操作,因此哪怕用户点击了关闭,窗体也会一直显示2. 没有设置图标的功能,因此弹出的窗体并没有图标原创 2023-08-01 10:28:26 · 1166 阅读 · 0 评论 -
使用OpenCV进行Delaunay三角剖分
使用OpenCV进行Delaunay三角剖分的代码示例原创 2022-12-30 16:55:07 · 374 阅读 · 0 评论 -
Windows下使用DCMTK开源库对DICOM协议的医学图像进行解析与显示
DICOM(Digital Imaging and Communications in Medicine),是用于医学影像处理、储存、打印、传输的一组通用标准协定。目前,被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用。要获取以DICOM格式存储的图像,可以选择阅读其格式文档自行解析,也可以用开源库来进行。本篇博客我们将介绍如何在Windows下使用DCMTK开源库对DICOM协议的图像进行解析与显示。首先下载原创 2022-05-12 11:48:13 · 2934 阅读 · 0 评论 -
RGB色彩空间转CMYK色彩空间
在发表论文的时候,有些杂志要求提交图片的色彩空间为CMYK(更接近印刷效果),而我们正常在电脑中使用的图片色彩空间为RGB,因此需要进行转换。操作比较简单,如果有PS的话可以直接转换,在此不做赘述。如果不想用PS或者想做批量的色彩空间转换,可用ImageMagick来进行操作。首先下载ImageMagick:https://download.imagemagick.org/ImageMagick/download/。本人下的是"ImageMagick-7.1.0-portable-Q16-x64.zip原创 2021-11-24 22:34:07 · 1829 阅读 · 0 评论 -
TIF图像目标物理尺寸及DPI修改
#include <iostream>#include <Windows.h>#include <gdiplus.h>#pragma comment(lib,"Gdiplus.lib")using namespace Gdiplus;using namespace std;/* * 通过字符串获得对应的CLSID,也就是图像编码器位置 * fo...原创 2019-11-03 12:03:01 · 2748 阅读 · 3 评论 -
C/C++ 图像处理(16)------图像轮廓の最小外接矩形
有时做图像处理,会遇到图像中大部分信息是冗余的情况,以下图为例: 假设图中黑色部分才是我们需要研究的对象,则外围的一堆白色是我们希望去掉的,这个时候用最小外接矩形来框住黑色部分,进而截取该部分的信息而忽略掉其他的信息变得实用。 下面,就给出查找图像轮廓中最小外接矩形的代码,后面有空再给出在图像中截取外接矩形的部分成为新图像的代码。#include "opencv2/highgui/highg原创 2017-01-24 17:44:11 · 8481 阅读 · 0 评论 -
OpenCV 视频处理框架
OpenCV 本身集成了 FFmpeg,因此对于视频是有解码和编码功能的。虽然其效率在本人看来还不能跟未被封装的FFmpeg相提并论,然用其来对视频进行解码得到图像,然后对图像进行处理并将得到的图像重新压缩成视频是非常方便的,下面将介绍把视频解码成图像并进行帧差法等操作后往回压缩成视频的框架搭建,值得注意的是在OpenCV2.1版本图像压缩成视频是有BUG的,最好还是用新的版本来进行学习。除此之外...原创 2014-07-14 23:31:23 · 4587 阅读 · 1 评论 -
VisualStudio+OpenCV 静态库配置
关于VisualStudio上如何配置OpenCV,网上随便搜下都有一大把,虽然天下文章一大抄,每篇看起来都差不多,但管用就行,这边不赘述。 最近下载了OpenCV2.4.13的版本,发现里面比以前多了一个叫“staticlib”的文件夹,感觉甚是高兴,虽然自己下载源代码捣鼓捣鼓也可以编译成静态库,但一则麻烦,二则要求有比较高的功底方可驾驭,因此以前就直接用着动态链接库了。现在别人编译好的可就方便原创 2017-04-09 01:43:26 · 2142 阅读 · 0 评论 -
C/C++ 图像处理(17)------基于混合高斯模型去除背景法
在图像处理中,常常需要通过去除图像的背景来获得图像中的人或者其他一些物体等前景对象。 传统的算法是先拍一张背景图像,然后将之后拍摄到的图像减去这张背景图像再做一些滤波处理以取得前景对象。这种方法的好处是简单,但简单之余,一旦背景发生了变化,变化的部分就会被识别为前景,以致算法失效,因此背景一有变动则需重新拍摄背景图像,非常麻烦。 混合高斯模型去除背景法则没有这个问题,其在加入的图像中不断学习,分原创 2017-04-06 17:38:07 · 6377 阅读 · 0 评论 -
C/C++ 图像处理(7)------图像の球面贴合算法
关于图像的球面投影,是全景应用中比较常见的技术,而现有的一些资源大多写的不太好,比较晦涩。在经过一段时间的摸索之后,发现了这个博客写的相对可以,本文的实现也将其作为重要的参考,如果看过本文之后有什么不明白或者觉得不好的地方可以去看看。 在展看本文之前,先来看看下面的两张图片:原创 2016-01-10 18:33:06 · 6905 阅读 · 7 评论 -
OpenCV 用dnn深度学习模块检测图像
最近在做人物目标检测相关的项目,发现OpenCV从3.1(或者更找)提供了dnn深度学习模块(需要自行编译进去,具体的可见这篇文章),因此下下来试试看。难度全在编译那边了,编译完成后反倒很简单,下面就简单的看一下: 新建一个空白的Win32项目 找到“opencv_contrib-master\modules\dnn\samples”文件夹(如果不知道这是什么,请去看看之前编译的那篇文章)的四个原创 2017-04-29 18:17:25 · 17394 阅读 · 6 评论 -
VS2015 X64+OpenCV3.2.0+opencv_contirb CMake3.8.0编译
因为最近在做深度学习方面的研究,发现OpenCV的DNN模块可以拿来用用,而该模块归属于未稳定,没有在官方编译好的版本中给出,需要自行编译,故有此文。(本文最后由本人编译好的库,如果不想自己编译的可以去下载,但要注意版本的问题) 首先把该下载的都下载了(OpenCV和CMake好像都存在着不同程度的被墙,如果“不科学上网”则下载起来比较费劲)。下载地址如下: opencv:https://gi原创 2017-04-29 13:28:32 · 4438 阅读 · 0 评论 -
Win10平台 OpenCV GPU模块的编译
最近搞了个”机械臂+机器视觉”的项目,发现视觉这块用到的特征点匹配算法有点慢,因此有了用OpenCV的GPU模块来实现的想法。然而官网下载编译好的版本并没有这一块,而别人编译好的又少东西比较烦,因此决定自己来。 需要下载和安装的东西 1.OpenCV源码:http://opencv.org/releases.html,我下的是2.4.13.3版本 2.CUDA:https://develope原创 2017-08-24 22:00:20 · 2084 阅读 · 1 评论 -
Ubuntu 16.04+OpenFace的配置和简单人脸检测
最近项目需要用到人脸训练和检测的东西,选用了OpenFace进行,因而有此文。 本人主要参考了下面的这两篇博客: 《ubuntu 16.04 LTS使用开源面部识别库Openface》 《ubuntu 16.04 LTS上安装Torch7》 如有雷同,绝非偶然。 1.python Ubuntu 16.04桌面版自带python 2.git$ sudo apt-get install g原创 2017-08-10 14:53:16 · 14436 阅读 · 11 评论 -
OpenCV 张正友标定法的实现
关于张正友标定法的原理,网上的资料很多,本人虽然看了一些,但觉得还没有到能讲的非常清楚的程度,因此不在这里做太多原理描述。有兴趣了解细节的可以看张大神的原文,或者这篇文章。 需要大概知道的是,相机标定中内参、外参和畸变的概念。 内参有五个,分别是: 摄像头拍摄到的物体和实际物体在x,y轴上的映射关系(两个参数)。 摄像头中心和图像中心的偏移关系(两个参数)。 摄像头和镜头安装非完全垂直,存原创 2017-10-05 15:46:00 · 14079 阅读 · 10 评论 -
C/C++ 图像处理(12)------图像の透视变换
图像的透射变换,在图像处理中经常被用到,本篇文章用以记录相关的一些算法研究和内容。由于作者近期比较忙,暂时只是记录了用OpenCV如何实现该算法,后续会加上相关的内容。#include #include using namespace cv;int main(){ //读入待处理图像 Mat image = imread("矫正后图像.jpg"); Mat原创 2016-07-24 00:08:48 · 5608 阅读 · 2 评论 -
C/C++ 图像处理(18)------人脸检测
人脸识别包括人脸检测和识别两个部分一般的逻辑是先检测人脸位置,然后再识别。具体的流程是准备要识别的人脸数据->检测人脸->学习人脸特征并生成模型检测人脸->对比检测出来的人脸和模型的相识度->给出识别结果本篇文章用OpenCV实现了这两个过程,具体的代码有参考网上的代码,如有雷同,绝非巧合具体的检测和识别原理不在本篇文章的范畴之内,望见谅人脸原创 2018-02-01 18:00:50 · 5166 阅读 · 3 评论 -
C/C++ 图像处理(19)------细化算法
准备了半年多的博士考试终于结束了!现在开始整理半年来没来得及发的一些技术总结。“C/C++ 图像处理”系列文章是随着本人做东西的先后写成的,文章的前后关系可能不太明显,在这里先跟关注专栏的各位老哥说声抱歉,在“深度学习”系列文章中会尽量改掉这个较为随意的风格,让文章更具可读性。之前做的项目有关于“图像细化”方面的应用,因此研究了ZhangSuen细化算法,在这里总结一下:首...原创 2018-05-10 00:49:08 · 13301 阅读 · 26 评论 -
Bayer8转RGB并用OpenCV显示
最近做项目用到工业摄像头,其输出最小的数据流是Bayer8,因为带宽有限,只好选用之。在获得数据后,解析成了比较要命的问题,因为ffmpeg等比较简单的工具没有该格式对其他格式的装换,因此只能自行实现。在这里万分感谢下面这个博客https://blog.csdn.net/leng_que/article/details/5961436本人基本上是按照该博客修改出了自己能用的版本(直接照...原创 2018-08-22 15:54:04 · 7074 阅读 · 0 评论 -
OpenCV 往图像中写入中文字符
用OpenCV好多年了,近日突然发现它的字符写入功能并不支持中文的写入(写入会出现乱码),是故本篇介绍下怎么补齐这一缺陷(当然正常情况下是用不着这个功能的)。网上一般推荐用Freetype来做,但写好的OpenCV2接口上的代码不完善,得到的效果差强人意:可以看到有明显的锯齿,因此看了下接口发现是参数调用问题,OpenCV1接口的代码似乎很OK,正要修改的时候发现有现成的不用Freet...原创 2018-11-14 21:53:52 · 22712 阅读 · 6 评论 -
利用libjpeg库解码内存中的jpeg数据
在“VS2013编译libjpeg库”这篇文章中本人介绍了如何在VS中编译libjpeg库并提供了一个应用的范例,而这篇文章将在此基础上,介绍如何用libjpeg库来解码内存中的jpeg数据。 其实这个需求已经不新鲜了,网上也能找到别人提供的一些解决方法,之所以要再次写不过是因为本人觉得那些方法或多或少都有些不对的地方,或者说因为版本的迭代,本来是对的,现在有点问题。当然,本人并没有很费原创 2015-01-26 23:14:18 · 7553 阅读 · 1 评论 -
OpenCV 操作图像的数据区
OpenCV在图像处理方面跟MATLAB的功能有点相近,提供了一系列图像处理的函数,极大的加快了图像处理相关方面开发的速度。关于OpenCV的配置网上有很多,随便查一查就可知晓,本文的代码是在VS2013+OpenCV的工作环境下进行的,因为变量的名字和使用的方法基本没变,所以同样适用于之前的版本。原创 2014-05-08 17:55:36 · 1657 阅读 · 0 评论 -
C/C++ 图像处理(15)------DXF文件の读取、绘图与显示
关于DXF文件的读取自几年前做项目的时候就用到了,不过当时是另外一个朋友负责的就没在意,直至最近的项目又要用到方才自己动手去弄。 因为几年前项目的代码还在,因此看了下发现之前朋友是用dxflib开源库实现的,因此也用了同样的库。 上网一查发现资料相当少,因为事很多比较忙,不大想去慢慢看说明文档,遇到一些疑问便在网上一个实现了功能的博客中问,哪知博主直接回复如下: 实在让人无语,只得让实验室原创 2016-12-27 17:21:55 · 20601 阅读 · 61 评论 -
jpeg转bmp实现c代码
#include #include #include #pragma pack(1)#define M_SOF0 0xc0#define M_DHT 0xc4#define M_EOI 0xd9#define M_SOS 0xda#define M_DQT 0xdb#define M_DRI 0xdd#define M_APP0 0xe0stati转载 2015-03-30 18:48:06 · 8576 阅读 · 9 评论 -
C/C++ BMP(24位真彩色)图像处理(1)------图像の打开与数据区处理
在图像处理过程中,通常以MATLAB代码进行模拟,原创 2014-04-20 17:44:45 · 9032 阅读 · 7 评论 -
OpenCV 获取摄像头图像数据并显示
用摄像头来获取数据的应用其实并不算太多,最近刚刚好用到,查了下用OpenCV来实现非常方便,于是就随便搞了下,的确分分钟就搞出来了,代码如下:IplImage* pFrame = NULL;//获取图片对象//获取摄像头 CvCapture* pCapture = cvCreateCameraCapture(0);//0为要索引的摄像头Sleep(2000);//等待摄像头开启//创原创 2014-12-15 22:11:05 · 5657 阅读 · 2 评论 -
libjpeg库解码jpeg图像输出数据排列问题
上一篇文章我们谈到如何修改libjpeg库来解码内存中的jpeg数据这件事情,也确实做到了这一点,然而紧随其后的就发现了一个很蛋疼的问题。因为libjpeg库输出的图像像素是以r-g-b这样的顺序排列的,而在Windows平台上要去显示内存中的图像数据通常是在内存中创建一个位图对象bitmap,然后将要显示的图像数据拷到其相应的位置中,拷贝完成后显示图像。蛋疼的地方就在于bitmap的像素是以b-原创 2015-02-04 23:08:48 · 2935 阅读 · 0 评论 -
C/C++ BMP(24位真彩色)图像处理(5)------图像の线性变换
图像的线性变换,是比较容易理解的。由线性变换公式y=kx+b知道,图像的像素点灰度值为x,经由线性变换输出y再替换掉原像素点的灰度值x实现映射。其作用是当图像像素的灰度值集中在一定范围如[a,b]时,可以经由线性变换公式将其映射到新的范围[c,d],如果将c取为0,将d取为255,则映射到整个灰度级中,即最大可能的加大了图像的对比度。经过上面的分析,再由数学解方程的思路我们知道只要定出a,b,c,原创 2014-09-26 23:41:19 · 3483 阅读 · 0 评论 -
C/C++ BMP(24位真彩色)图像处理(2)------图像の截取
对上一篇博客《图像处理模板---针对bmp图像数据区的操作和输出处理完成图像》原创 2014-04-29 03:44:33 · 3559 阅读 · 1 评论 -
包含OpenCV开源库的程序打包发行需知
程序中用到opencv的那些库文件,就得包含相应的dll文件。比如,程序中包括opencv_core231.lib,那就得把opencv_core231.dll文件打包到exe文件目录下。或许,还得加进去编译opencv的编译器的相应库,例如,opencv使用vs2008编译的,需要添加vs2008安装目录\VC\redist\x86\Microsoft.VC90.CRT 下的三个dll文件,这原创 2014-08-08 18:36:11 · 4488 阅读 · 0 评论 -
OpenCV 分离颜色通道与多通道图像混合
同样学习自浅墨大神博客,代码转载 2014-05-10 00:15:20 · 1663 阅读 · 0 评论 -
OpenCV Trackbar轨迹条运用与轮廓查找填充
下大雨好惆怅啊,宅在宿舍没事做!!!继续学习浅墨大神写的 OpenCV 相关教程吧,老样子,代码与注释经自己习惯和编程风格做了些许修改,如希望亲自一睹大神风采,请猛搓下面链接:点击打开链接本篇对应的大神博客篇目为:【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整。由于代码较为简单,可自行建立工程配置 OpenCV后加入下面的代码自行运行尝试,图片需要自己准转载 2014-05-11 22:03:21 · 1999 阅读 · 0 评论 -
OpenCV 通过 MFC 的 Picture Control 控件操作图像
如果希望对显示在MFC Picture Control 控件里的图像进行操作,比如画线画点之类的,可以利用 OpenCV 结合 MFC 本身的鼠标响应函数来实现。 如何将图像显示到 Picture Control 控件不谈,本文是采用的这篇博客所介绍的方法实现的。 点击打开链接 给对话框添加 WM_LBUTTONDOWN 鼠标左键点击消息,在消息响应函数中添加如下代码...原创 2014-06-06 14:31:53 · 5573 阅读 · 0 评论 -
C/C++ 图像处理(6)------图像の连通域查找和分别上色算法研究
#include #include #include //OpenCV包含头文件 #include #include //容器头文件 using namespace std;using namespace cv;int valuearray[255] = {0};//记录连通域数值对应关系class colorobj{public: int value; Scalar原创 2015-05-11 20:59:21 · 6418 阅读 · 2 评论 -
C/C++ BMP(24位真彩色)图像处理(4)------图像の旋转
历经一个多月,CSDN貌似终于好像把文章列表阅读量信息归零BUG给修好了,于是乎放篇做期末大作业时写的文章上来测测效果,可别又像上次一样一发文章就又坑爹了啊!本篇谈的是图像的旋转,不算是什么新鲜的题目了。但是现在由于很多工具如MATLAB、OPENCV等都把算法写好给用户调用,导致大多用户只知其然不知其所以然,所以回顾一下也是好的。图像的旋转,说到底就是每个像素点绕着某个圆心旋转一定角度。原创 2014-09-21 01:18:33 · 8616 阅读 · 0 评论 -
OpenCV 2.2版本以上显示图片到 MFC 的 Picture Control 控件中
OpenCV 2.2 以及后面的版本取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序员无法调用里面的显示函数来将图片显示到 MFC 的 Picture Control 控件中。为此,网上很多人表示只要将那两个文件人为的提取出来然后放到工程里面就解决问题了,也提供了两个文件的下载,但是这麻烦不说,还会导致一些奇奇怪怪的报错(至少本人是这样的,很崩溃!)。所以原创 2014-06-06 01:23:09 · 4044 阅读 · 1 评论