1、Installing via CRAN
系统环境:windows 7
install.packages('IRkernel')
2、 Making the kernel available to Jupyter
IRkernel::installspec()
IRkernel::installspec(user = FALSE)
参考文献:
reading notes
在windows系统中第一次使用Jupyter Notebook时,它默认打开windows的C盘目录,并以此作为它的默认工作目录。为避免后期开发Jupyter Notebook生成的相关文件消耗C盘存储空间,我们需要修改它的默认工作目录。
打开Anaconda Prompt,输入如下命令:
jupyter notebook --generate-config
打开jupyter_notebook_config.py文件,全局搜索notebook_dir,并修改其内容,得到下图
右击JupyterNotebook快捷方式,选择【属性】,删除【目标】属性中的【%USERPROFILE%】,点击【应用】–【确定】。
与Harris Corner Detector 相比显示出更好的结果
corners = cv.goodFeaturesToTrack( image, maxCorners, qualityLevel, minDistance[, corners[, mask[, blockSize[, useHarrisDetector[, k]]]]] )
image:输入8-bit或者浮点32位单通道图像
corners:检测到的角落的输出向量
maxCorners:要返回的最大角数。如果角落多于找到的角落,则返回最大的角落。maxCorners<=0意味着不设置最大值限制并返回所有检测到的角点
哈里斯边角侦测(Harris Corner Detector)是被广泛运用在电脑死机的演算法,主要是用于从影像中找出代表边角的特征点。
角落的概念是它相邻的区域有两条截然不同方向的边,换句话说,角落也是两条边的连接点,而这条边的附近有剧烈的亮度变化。
为了找出影响中的边角,科学家们提出了不同种的边角测试器包含Kanade-Lucas-Tomasi(KLT)算子,哈里斯算子是其中最简单,有效,及可信赖的方法。这两种受欢迎的方法均是以局部结构矩阵来当作基础,想较于Kanade-Lucas-Tomasi(KLT)边角侦测,就算是影响经过旋转或者是亮度的调整,哈里斯边角侦测具有良好的结果重现性。
dst=cv.cornerHarris(src, blockSize, ksize, k[, dst[, borderType]])
1 | import cv2 |
输入图片:
结果图(需要方大才看得清楚):
有时可能需要以最高精度找到角落。opencv附带了一个函数cv2.cornerSubPix(),它进一步以亚精度检测到的角点。该函数迭代以找到角点或径向鞍点的亚像素精度位置
1 | corners = cv.cornerSubPix( image, corners, winSize, zeroZone, criteria ) |
1 | retval, labels, stats, centroids = cv.connectedComponentsWithStats( image[, labels[, stats[, centroids[, connectivity[, ltype]]]]] ) |
1 | import cv2 |
参考网址:
https://docs.opencv.org/3.4.3/dd/d1a/group__imgproc__feature.html#ga354e0d7c86d0d9da75de9b9701a9a87e
计算源图像的每个像素到最临近零像素的距离
dst = cv2.distanceTransform(src,distanceType,makeSize[,dst[,dstType]])
类型 | 描述 | ||||
---|---|---|---|---|---|
cv2.DIST_USER | 用户自定义距离 | ||||
cv2.DIST_L1 | distance=\ | x1-x2\ | +\ | y1-y2\ | |
cv2.DIST_L2 | 简单的欧几里德距离 | ||||
cv2.DIST_C | distance=max(\ | x1-x2\ | ,\ | y1-y2\ | ) |
cv2.DIST_L12 | distance=2(sqrt(1+x*X/2)-1)) | ||||
cv2.DIST_FAIR | distance=c^2(\ | x\ | /c-log(1+\ | x\ | /c)),c=1.3998 |
cv2.DIST_WELSCH | distance=c\^2/2(1-exp(-(x/c)^2)),c=2. | ||||
cv2.DIST_HUBER | distance=\ | x\ | <c?x^2/2:c(\ | x\ | -c/2),c=1.345 |
参考网址:
https://docs.opencv.org/3.4.3/d7/d1b/group__imgproc__misc.html#ga8a0b7fdfcb7a13dde018988ba3a43042
可以使用侵蚀和膨胀作为基本操作来执行高级形态学变换
dst=cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
模式 | 描述 |
---|---|
cv.MORPH_ERODE | 腐蚀 |
cv2.M0RPH_DILATE | 扩张 |
cv2.MORPH_OPEN | 一个开放的操作 dst=open(src,element)=dilate(erode(src,element)) |
cv2.MORPH_CLOSE | 一个关闭的操作 dst=close(src,element)=erode(dilate(src,element)) |
cv2.MORPH_GRADIENT | 一个形态梯度 dst=morph_grad(src,element) = dilate(src,element)-erode(src,element) |
cv2.MORPH_TOPHAT | “top hat” dst=tophat(src,element)=src-open(src,element) |
cv2.MORPH_BLACKHAT | “black hat” dst=blackhat(src,element)=close(src,element)-src |
circles=cv.HoughCircles(image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]])
参考网址:
https://blog.csdn.net/tengfei461807914/article/details/77507820
https://docs.opencv.org/3.4.3/dd/d1a/group__imgproc__feature.html#ga47849c3be0d0406ad3ca45db65a25d2d
lines =cv.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]] )
cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])
image:输入图像
threshold1: minVal
threshold:maxval
aperturesize :Sobel算子大小,默认为3
L2gradient:为一个布尔值。若为真则使用L2范数进行计算(即对两个方向导数的平方和进行开方),否则使用L1范数(直接将两个方向导数的绝对值相加)
梯度强度大于maxval的任何边缘肯定为边缘,而minVal以下的边缘肯定为非边缘,非边缘被舍弃。位于这两个阈值之间的是基于其连通性的分类边缘或非边缘。如果它们连接到“可靠边缘”像素,则它们被视为边缘的一部分。否则,他们也被丢弃。见下图:
1 | import numpy as np |
处理前图片如下图所示
处理后图片如下图所示
cv2.calcHist(images,channels,mask,histSize,ranges[,hist[,accumulate]])