OpenCV-Python图像腐蚀和膨胀
简介图像的腐蚀与膨胀互为逆向操作,通常用于处理二值图像(黑白图,以黑色为底面背景),因此需要先进行二值化处理,腐蚀和膨胀通俗的理解就是,在指定大小的卷积核内,如果该卷积核内全为黑色或全为白色,则该卷积核内像素值不变,但若是既有黑色又有白色,即在图像边缘处,那么膨胀操作则会将该卷积核内所有白色像素点都赋值变为黑色,以此将图像向内腐蚀掉一圈,而膨胀操作则相反,会将卷积核内的黑色像素点赋值成2白色,以此让图像膨胀一圈。
一、图像的腐蚀
它会侵蚀前景物体的边界,并从图像中移除小规模的细节,但同时会减少感兴趣区域的大小。在该操作中,对图像中任意形状的奇数大小的卷积核进行卷积,如果核下的所有像素都为1,则认为原始图像中的像素(1或0)为1,否则将其侵蚀,即使其为零。因此,根据内核的大小,所有靠近边界的像素都将被丢弃。因此前景物体的厚度或大小减小或者图像中的白色区域减小。该方法适用于去除小的白噪声和分离两个连通的物体。基本上,它计算给定核区域上的局部最小值。前景物体的厚度或大小会减少换句话说,图像中的白色区域会减少。
import cv2
import numpy as np
src_img = cv2.imread("2-1.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
#定义要处理的卷积核大小和卷积核的类型,这里定义了两种,比较效果
k1 = np.ones((3, 3), np.uint8)
k2 = np.ones((5, 5), np.uint8)
res_img_1 = cv2.erode(src_img, k1)
res_img_2 = cv2.erode(src_img, k2)
cv2.imshow("res_img_1", res_img_1)
cv2.imshow("res_img_2", res_img_2)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、图像的膨胀
膨胀操作通常使用一种构造元素来探测和扩展输入图像中包含的形状。这种作用与侵蚀相反。在此操作中,对图像中任意形状的奇数大小的卷积核进行卷积,如果核下至少有一个像素为1,则该像素元素为1。所以它增加了图像中的白色区域或者前景物体的大小增加了。为了去除噪声,侵蚀之后是膨胀。因为,侵蚀会去除白噪声,但也会缩小我们的物体。所以我们把它扩张。因为噪音消失了,它们不会再回来,但我们的目标面积增加了。它在连接对象的破碎部分时也很有用。
import cv2
import numpy as np
src_img = cv2.imread("2-1.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
k1 = np.ones((3, 3), np.uint8)
k2 = np.ones((5, 5), np.uint8)
res_img_1 = cv2.dilate(src_img, k1)
res_img_2 = cv2.dilate(src_img, k2)
cv2.imshow("res_img_1", res_img_1)
cv2.imshow("res_img_2", res_img_2)
cv2.waitKey(0)
cv2.destroyAllWindows()
腐蚀操作一般用于消去图像中不需要的粘连部分,而膨胀操作则用于填充图像内的空白部分,同时也可以恢复图像由于进行腐蚀操作后缩小的面积。
前一篇博客中已经说过Golang对Gzip的处理,其实这是我的服务器端的处理,那么当我们服务器返回Gzip压缩的字符串后,客户端如何进行解压呢?本文主要记录下JavaScript对Gzip进行压缩和解压处理。
Golang打包一般的静态资源文件到二进制文件中还是比较简单,但是如果遇到使用Vue编写的后台界面,该如何打包呢?本文就是记录如何打包Vue到二进制包
nice命令用于修改为运行的程序运行时的优先级,但是对正在运行的进程,想要修改优先级,就需要用到renice命令。
OpenCV-Python读取、显示和保存图片,主要介绍如下函数的使用:imread、imshow、imwrite。读取图片使用imread函数,注意:opencv读取图片,默认颜色通道是BGR,而不是RGB。使用imshow函数即可,第一个参数表示窗口名称,第二个参数就是要显示的图像。保存图片使用imwrite函数, 第一个参数为要保存的路径和名称,第二个参数为图片,最后一个参数为可选项。
为了实现能定时修改桌面背景,又不想使用其他的软件,所以自己就通过了Python实现了更换桌面背景的程序,后期通过执行定时任务来修改自己的桌面背景。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。