自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(314)
  • 资源 (1)
  • 收藏
  • 关注

原创 OpenCV.Canny边缘检测

Canny边缘检测Canny边缘检测是一个较为特殊的检测图形,其特殊或者创新在于其使用两个阈值进行检测,然后将所有的边缘连接在一起,形成边缘曲线或线段。其对噪声较为敏感,故其在检测前需要进行降噪。滤波器可根据实际情况选择,但一般由于噪声的自然随机性,一般选择高斯滤波进行降噪。Canny一种步骤如下:高斯滤波:抑制噪声;灰度转换:在灰度图像上计算其梯度值;计算梯度:Sobel或Scharr;非最大信号抑制:在梯度图像上寻找局部最大值;高低阈值连接:连接边缘像素为线段,形成轮廓。其函数声明如下

2021-11-27 14:29:30 1663

原创 OpenCV.拉普拉斯算子(Laplacian)

拉普拉斯算子Scharr算子与Sobel算子是使用一阶导数进行处理图像的边缘部分。使用任意两者之一的方法进行计算图形梯度的时候在图形的边缘处会有跃迁,即原图像的梯度函数会在边缘处存在极值。那么对其使用二阶导数情况又该如何?请看下面的示例图:此图为一张典型的灰度跃迁图。我们可以很轻易地看到,其左侧向右部分至图形的中点在逐渐变黑,至中点后,其向右逐渐变白。那么其一阶导数图则如下所示:Sobel算子的原理基于此,我们再对其一阶导数进行求导,其二阶导数图如下:由图可知,在一阶导数的跃迁处,二阶导数过零

2021-11-27 11:23:40 3070

原创 Swift 自定义日志类 Log

前言:iOS并没有像Android那样提供Log类进行日子管理,自带的print与NSLog也显得很朴素。第三方框架想XG等也很优秀,但是也需要添加依赖和学习成本。这里我们利用Swift的关键字保留(类似于c语言的预编译命令),可以很简单实现超轻量但却功能强大的日志管理工具,考虑到大多数项目不像服务端进行持久化管理,这里仅输出控制台即可。这里我们提供五个级别,即琐碎(Verbose)、调试(Debug)、信息(Info)、警告(Warning)、错误(Error),再辅以时间、文件名、行数、方法名及颜色

2021-11-25 20:47:47 2582

原创 ‘xxx pcm‘ is out of date and needs to be rebuilt

报错:‘xxx pcm’ is out of date and needs to be rebuilt原因:PCM文件未更新解决方法:进入偏好设置,选择Derived Data,点击右侧的箭头进入文件夹,选择对应的项目删除即可。

2021-11-25 20:33:07 944

原创 OpenCV.Scharr梯度

Scharr梯度Scharr梯度算子分为X方向Y与方向,可以分别计算其各自方向的梯度图像,然后将其进行平均权重相加即可。其声明如下:Scharr(src, dst, ddepth, dx, dy);各参数解释如下:src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。ddepth表示输出图像的深度,通常为CV_32F或CV_64F等。dx表示X方向的梯度,为1则启用,0则禁用,下同。dy表示Y方向的梯度Scharr算

2021-11-25 20:15:22 1082

原创 OpenCV.Sobel梯度

Sobel梯度Sobel梯度算子分为X方向Y与方向,可以分别计算其各自方向的梯度图像,然后将其进行平均权重相加即可。其声明如下:Sobel(src, dst, ddepth, dx, dy);各参数解释如下:src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。ddepth表示输出图像的深度,通常为CV_32F或CV_64F等。dx表示X方向的梯度,为1则启用,0则禁用,下同。dy表示Y方向的梯度Sobel算子的Ke

2021-11-24 21:15:53 1581

原创 OpenCV.自适应阈值.Adaptive

自适应阈值.TRIANGLE对于Java代码(JavaFX Controller层)public class Controller{ @FXML private Text fxText; @FXML private ImageView imageView; @FXML private Label resultLabel; @FXML public void handleButtonEvent(ActionEvent actionEvent) throws IOExc

2021-11-23 20:59:10 1804

原创 OpenCV.自适应阈值.TRIANGLE

自适应阈值.TRIANGLE对于阈值操作,不仅可以手动设置阈值,还可以自动计算阈值,即根据输入源本身特征进行自适应阈值。本节自适应为TRIANGLE。TRIANGLE的含义为将灰度输入源的直方图寻找其最大峰值,从最大峰值作为新三角形的顶点作到水平轴的45°连线,在这个构成的三角形作到直方图的距离d,d即为阈值T。在OpenCV中,其枚举为Imgproc.THRESH_TRIANGLE。其几何描述如下:Java代码(JavaFX Controller层)public class Controller{

2021-11-22 21:09:40 1697

原创 OpenCV.自适应阈值.OTSU

自适应阈值.OTSU对于阈值操作,不仅可以手动设置阈值,还可以自动计算阈值,即根据输入源本身特征进行自适应阈值。本节自适应为OTSU。OTSU的含义为将灰度输入源的直方图划为两个部分,并计算其类内方差和类间方差,最小类内方差或最大类间方差即为阈值T。在OpenCV中,其枚举为Imgproc.THRESH_OTSU。其数学描述解释如下:假设src为双峰图像,则OTSU将会找到一个阈值t,以最小化由关系给出的加权类内方差:其中,实际上找到了一个位于两个峰值之间的 t 值,使得两个类的方差最小。J

2021-11-21 09:58:18 2419

原创 OpenCV.反阈值取零

反阈值取零反阈值取零的定义与阈值取零相反,即为大于阈值的就返回0,小于阈值的则返回原值。在OpenCV中该类的实现依赖于threshold() 函数。下面是该函数的声明:threshold(src, dst, thresh, maxval, type);各参数解释src表示此操作的源(输入图像)的Mat对象。mat表示目标(输出)图像的类Mat的对象。thresh表示阈值T。maxval表示最大灰度值,一般为255。type表示要使用的阈值类型的整数类型变量,反

2021-11-19 23:22:42 1691

原创 OpenCV.阈值取零

阈值取零阈值取零即为大于阈值的就返回原值,小于阈值的则返回0。可以保留原峰点去除特征不太明显的样本。在OpenCV中该类的实现依赖于threshold() 函数。下面是该函数的声明:threshold(src, dst, thresh, maxval, type);各参数解释src表示此操作的源(输入图像)的Mat对象。mat表示目标(输出)图像的类Mat的对象。thresh表示阈值T。maxval表示最大灰度值,一般为255。type表示要使用的阈值类型的整数

2021-11-18 20:33:49 406

原创 OpenCV.阈值截断

阈值截断阈值截断即为大于阈值的就返回阈值,小于阈值的则返回原值。可作到削去峰点并维持原样本的作用。在OpenCV中该类的实现依赖于threshold() 函数。下面是该函数的声明:threshold(src, dst, thresh, maxval, type);各参数解释src表示此操作的源(输入图像)的Mat对象。mat表示目标(输出)图像的类Mat的对象。thresh表示阈值T。maxval表示最大灰度值,一般为255。type表示要使用的阈值类型的整数类

2021-11-17 20:46:29 3854 1

原创 OpenCV.反阈值二值化

反阈值二值化反阈值二值化与阈值二值化互为逆操作。在OpenCV中该类的实现依赖于threshold() 函数。下面是该函数的声明:threshold(src, dst, thresh, maxval, type);各参数解释src表示此操作的源(输入图像)的Mat对象。mat表示目标(输出)图像的类Mat的对象。thresh表示阈值T。maxval表示最大灰度值,一般为255。type表示要使用的阈值类型的整数类型变量,反阈值二值化为Imgproc.THRESH

2021-11-16 20:28:47 2808

原创 OpenCV.普通阈值

普通阈值阈值本质上就是对图像进行分割的一个过程。利用阈值二值化可对灰度或彩色图像进行像素数据分类。普通阈值即阈值二值化就是针对给定的图像,以T作为阈值进行分割的过程。在OpenCV中该类的实现依赖于threshold() 函数。下面是该函数的声明:threshold(src, dst, thresh, maxval, type);各参数解释src表示此操作的源(输入图像)的Mat对象。mat表示目标(输出)图像的类Mat的对象。thresh表示阈值T。maxval表示最

2021-11-15 20:28:47 2392

原创 OpenCV.金字塔(Pyramid).均值偏移金字塔

均值偏移金字塔对于给定的一定数量样本,任选其中一个样本,以该样本为中心点划定一个圆形区域,求取该圆形区域内样本的质心,即密度最大处的点,再以该点为中心继续执行上述迭代过程,直至最终收敛。可以利用均值偏移算法,可实现彩色图像分割。pyrMeanShiftFiltering实现图像在色彩层面的平滑滤波,它可以中和色彩分布相近的颜色,平滑色彩细节,侵蚀掉面积较小的颜色区域,算法跟金字塔图像分割相比耗时较长。在OpenCV中该类的实现依赖于pyrMeanShiftFiltering() 函数。下面是该函数的声明:

2021-11-14 11:04:31 1593

原创 OpenCV.金字塔(Pyramid).向下金字塔

向下金字塔金字塔是对图像的一种分辨率操作,使用特定的平滑过滤器(例如高斯,拉普拉斯算子)对输入图像进行初始平滑,然后对平滑后的图像进行二次采样。这个过程重复多次。最主要的用途是图像的分割。用分辨率来解释图片的的简单结构。简单来说,向下金字塔可使输入源的分辨率缩小,如src分辨率为1920x1080,那么dst则为960x540。在OpenCV中该类的实现依赖于pyrDown() 函数。下面是该函数的声明:pyrDown(src, dst, dstsize, borderType);各参数解释sr

2021-11-14 10:40:08 1922

原创 OpenCV.金字塔(Pyramid).向上金字塔

向上金字塔金字塔是对图像的一种分辨率操作,使用特定的平滑过滤器(例如高斯,拉普拉斯算子)对输入图像进行初始平滑,然后对平滑后的图像进行二次采样。这个过程重复多次。最主要的用途是图像的分割。用分辨率来解释图片的的简单结构。简单来说,向上金字塔可使输入源的分辨率方法,如输入源分辨率为1920x1080,那么src则为3840x2060。金字塔操作期间,图像的平滑度增加并且分辨率(尺寸)减小。在OpenCV中该类的实现依赖于pyrUp() 函数。下面是该函数的声明:pyrUp(src, dst, dstsiz

2021-11-12 22:21:32 1942

原创 OpenCV.SQR箱式滤波

SQR箱式滤波SQR箱式滤波对滤波器内每个像素数值的平方求和,之后根据输入参数选择是否进行归一化操作。在OpenCV中该类的实现依赖于sqrBoxFilter 函数。下面是该函数的声明:sqrBoxFilter(src, dst, ddepth, ksize);各参数解释src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。ddepth表示输出图像深度的整数类型变量,值为-1表示与输入图像相同。ksize表示内核大小的Size对象

2021-11-11 20:33:39 896

原创 OpenCV.箱式滤波

箱式滤波箱式滤波实现的效果与均值模糊类似,作用是将每个像素替换成其相邻矩形内像素的平均值,是低通滤波器。在OpenCV中该类的实现依赖于boxFilte() 函数。下面是该函数的声明:boxFilter(src, dst, ddepth, ksize, anchor, normalize, borderType);各参数解释src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。ddepth表示输出图像深度的整数类型变量。ksize

2021-11-10 21:04:08 2283

原创 OpenCV.开闭操作

开闭操作开闭操作依赖于腐蚀和膨胀组合成的新的形态学操作。开操作主要用于去除图形的噪声或元件间连接;而闭操作主要用于填充闭合区域。开闭操作主要场景是较小的特征范围。下面是其声明:morphologyEx(src, dst, op, kernal);各参数解释如下:src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。op操作行为,可为Imgproc.MORPH_CLOSE 或Imgproc.MORPH_OPENkernal表示ker

2021-11-08 20:34:10 1710

原创 OpenCV.腐蚀与膨胀

腐蚀与膨胀腐蚀与膨胀是图形的形态学操作,常见用于二值化或灰度图像,对与图像的噪声消除、特征处理有很好的作用。所谓膨胀即输入图像与结构元素进行卷积计算,取局部极大值来替代中心值;而腐蚀则为取局部极小值替换中心值。腐蚀与膨胀这两个函数定义如下:dilate(src, dst, kernal); //膨胀erode(src, dst, kernal); //腐蚀膨胀各参数解释:src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。kernal

2021-11-07 15:28:28 3330

原创 OpenCV.自定义卷积核.梯度

自定义卷积核—梯度OpenCV除了提供由库进行计算的kernel,还支持自定义kernel来进行自定义滤波。常见的包括模糊、锐化、梯度计算等方式。利用梯度可检测图片边缘变化较大的地方,在二值化和特征提取时有很大作用。自定义kernel的实现依赖于filter2D() 函数。下面是该函数的声明:filter2D(src, dst, ddepth, kernel);各参数解释如下:src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。ddept

2021-11-06 20:08:36 659

原创 OpenCV.自定义卷积核.锐化

自定义卷积核—模糊OpenCV除了提供由库进行计算的kernel,还支持自定义kernel来进行自定义滤波。常见的包括模糊、锐化、梯度计算等方式。自定义kernel的实现依赖于filter2D() 函数。下面是该函数的声明:filter2D(src, dst, ddepth, kernel);各参数解释如下:src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。ddepth输出图像深度,值为-1则表示与输入图像一致。kernel自

2021-11-05 22:28:24 2455

原创 OpenCV.自定义卷积核.模糊

图像各向异性滤波Java代码(JavaFX Controller层)在这里插入代码片运行图

2021-11-04 20:33:17 756

原创 OpenCV.均值迁移滤波

均值迁移滤波均值迁移滤波通过概率密度来估算与中心迁移的方式进行图像边缘保留滤波。在OpenCV中该类的实现依赖pyrMeanShiftFiltering 函数。下面是该函数的声明:pyrMeanShiftFiltering(src, dst, sp, sr);各参数解释src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。sp图像色彩空间,即窗口大小sr图像色彩像素值范围,即像素差值范围Java代码(JavaFX Contr

2021-11-02 20:51:44 537

原创 OpenCV.高斯双边滤波

高斯双边滤波高斯双边滤波属于非线性滤波,该类滤波被称为图像边缘保留滤波,又称EPF方法,其作用类似于现在的“美颜”、“美图”类产品所呈现的效果。在OpenCV中该类的实现依赖于bilateralFilter() 函数。下面是该函数的声明:bilateralFilter(src, dst, d, sigmaColor, sigmaSpace);各参数解释src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。dkernal直径大小,一般取0。

2021-11-02 20:33:10 449

原创 OpenCV.最大值滤波与最小值滤波

最值滤波采用统计学方式进行kernal计算不仅有中值滤波,还有最大值与最小值滤波。顾名思义,最值滤波就是取kernal排序后得最大值或最小值来取代中心像素作为输出。不过在OpenCV中并无max或min滤波函数,而是以形态学操作dilate(扩张)与erode(侵蚀)调用而来。下面是其声明:dilate(src, dst, kernal);erode(src, dst, kernal);扩张各参数解释:src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的

2021-10-31 19:55:39 3866

原创 OpenCV.中值模糊

中值模糊均值模糊与高斯模糊都属于线性滤波,除此之外还包括基于统计排序的滤波器,如本节的中值模糊,可用于特定环境下的图像降噪。所谓中值指的是kernal对像素值进行中值排序而得。在OpenCV中,中值模糊依赖于median() 函数而实现。该函数声明如下:medianBlur(src, dst, ksize)各参数解释如下:src表示此操作的源(输入图像)的Mat对象。dst表示此操作的目标(输出图像)的Mat对象。ksize表示内核大小的Size对象,注意该参数大小必须为奇数且

2021-10-30 16:12:16 424

原创 OpenCV.高斯模糊

高斯模糊均值模糊系kernal系数均相等情况下,实际上还存在着在空间上由于相对位置不同而引起kernal中每个系数有不同的权重的模糊,称之为高斯模糊。高斯模糊的每个系数的权重由高斯正太分布而生成,根据高斯公式可知,当δ为1时,对于kernal而言,越在卷积核中心,其系数越高。当然,δ越大,其模糊程度也越明显。在OpenCV中,高斯模糊由**Gaussianblur()**实现,该函数定义如下:GaussianBlur(src, dst, ksize, sigmaX)各参数解释如下:src表示此

2021-10-29 21:39:03 4427

原创 OpenCV.均值模糊

均值模糊Java代码(JavaFX Controller层)public class Controller{ @FXML private Text fxText; @FXML private ImageView imageView; @FXML public void handleButtonEvent(ActionEvent actionEvent) throws IOException { Node source = (Node) actionEvent

2021-10-28 20:34:14 406

原创 OpenCV.图形绘制.文本

文本绘制在OpenCV中文本的绘制依赖于putText() 该方法。该函数一个常用构造函数如下:putText(img, text, org, fontFace, fontScale,color,thickness)下面是该函数的各参数解释:mat表示要在其上绘制矩形的图像的Mat对象。text表示要添加的文本的字符串变量。org表示图像中左下角文本字符串的Point对象,即文本的第一个字符变量左下角的位置。fontFace表示字体类型的整型变量。fontScal

2021-10-27 20:51:49 436

原创 OpenCV.图形绘制.箭头

箭头绘制在OpenCV中箭头的绘制依赖于arrowedLine() 该函数。该函数的一个重载函数如下:Imgproc.arrowedLine(mat, pt1, pt2, color, thickness);各参数解释如下:mat表示要在其上绘制箭头的图像的Mat对象。pt1 和 pt2两个Point对象,表示要绘制的箭头的点。其中pt1系起点,pt2系箭头点。color表示矩形颜色的标量对象(BGR)。thickness表示厚度。Java代码(JavaFX Co

2021-10-25 20:58:48 1388

原创 OS X开发.第一章,1.18, NSPopover

1.18 NSPopoverNSPopover是Cocoa中提供的可用于浮动弹出的组件,类似于iPad中的UIPopover。被弹出的视图(NSViewController)拥有自己的生命周期与代理方法。1.18.1 基本声明class CompentViewController: NSViewController { var mView: NSView! var button: NSButton! override func loadView() {

2021-10-24 10:54:40 445

原创 OpenCV.图形绘制.折线

折线绘制在OpenCV中折线的绘制依赖于polylines() 该函数。其解释如下:mat表示要在其上绘制矩形的图像的Mat对象。pts包含MatOfPoint类型的对象的List对象。isClosed指定折线的布尔型类型的参数是否为关闭的。color表示矩形颜色的标量对象(BGR),Scalar类型。thickness表示矩形厚度的整数。其中pts包含的类型解释如下:pts接受一个List对象,该对象只可放入MatOfPoint类型的对象;而MatOfPoint是一组Poin

2021-10-24 09:55:01 2362

原创 OS X开发.第一章,1.17, NSTabView

1.17 NSTabViewNSTabView是Cocoa中提供的用以管理一组子容器的容器,其作用类似于Swing中的JTabbedPane,在有限的空间内可展示或管理更多的子容器。1.17.1 基本声明class WidgetController: NSViewController, NSTabViewDelegate { var mView: NSView! var tabView: NSTabView! override func loadView() {

2021-10-23 22:03:54 949

原创 OpenCV.图形绘制.椭圆

椭圆的绘制OpenCV中椭圆的绘制依赖于ellipse() 这个函数。下面是该函数的参数说明。img输入源,Mat对象类型。box椭圆的参数说明,RotatedRect()类型的结构体。该结构体接受一个Point对象用以确定椭圆的质心,一个Size对象用以确定与椭圆外切的一个虚拟矩形的宽和高,以及旋转角度(已转换为角度制)。color颜色对象thickness厚度。下面是RotatedRect()结构体内参数在二维平面下的示意图:Java代码(JavaFX Con

2021-10-23 17:40:27 1221

原创 OS X开发.第一章,1.16, NSBox

1.16 NSBoxNSBox是Cocoa中用来进行信息分组(控件分组)的视图,本身带有标题(title),也可设置自身展示样式。子控件与父视图之间的间隔使用contentViewMargins属性即可,子控件的放入使用NSBox的contentView属性进行addSubview即可。1.16.1 基本声明class WidgetController: NSViewController { var mView: NSView! var box: NSBox! var

2021-10-22 22:17:35 670

原创 The linked library ‘xxx‘ is missing one or more architectures required by this target: arm

报错:The linked library ‘libPods-xxx.a’ is missing one or more architectures required by this target: armv7.原因:原有第三方库尚未配置好arm架构的Xcode。这里是腾讯的UGC库,2021款imac编译时出现上述问题。解决方法:进入如下路径:/Users/你的Mac名称/Library/Developer/Xcode/DerivedData找到出现问题的项目,删除退出重新编译运行即可。

2021-10-22 21:49:56 4246

原创 OpenCV.图形绘制.矩形

矩形绘制使用rectangle() 方法在图像上绘制一个矩形。 该方法的一个构造方法如下:rectangle(img, pt1, pt2, color, thickness);参数意义如下:mat表示要在其上绘制矩形的图像的Mat对象pt1 和 pt2两个Point对象,表示要绘制的矩形的顶点。scalar表示矩形颜色的标量对象(BGR)。thickness表示矩形厚度的整数; 默认情况下,厚度值为1。Java代码(JavaFX Controller层)public class

2021-10-22 20:45:40 6310

原创 OS X开发.第一章,1.15, NSProgressIndicator

1.15 NSProgressIndicatorNSProgressIndicator是Cocoa中提供的用以显示处理进度的控件,可显示当前任务百分比。1.15.1 基本声明class WidgetController: NSViewController { var mView: NSView! var progress: NSProgressIndicator! override func loadView() { self.view = NSV

2021-10-21 21:21:12 164

ModelGoon java代码自动生成UML图

ModelGoon,Eclipse插件。由 java代码可自动生成UML类图、协作图、顺序图等,操作简单

2020-12-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除