天津网站建设 泰姆仕,wordpress添加到主屏幕,wordpress博客转换小程序,婚纱摄影网站设计目录 一、形态学 二、图像全局二值化 三、自适应阈值二值化
四、腐蚀操作
五、获取形态学卷积核
六、膨胀操作
七、开运算
八、闭运算 一、形态学
定义:
指一系列处理图像形状特征的图像处理技术形态学的基本思想是利用一种特殊的结构元(本质上就是卷积核)来测量或提取输…目录 一、形态学 二、图像全局二值化 三、自适应阈值二值化
四、腐蚀操作
五、获取形态学卷积核
六、膨胀操作
七、开运算
八、闭运算 一、形态学
定义:
指一系列处理图像形状特征的图像处理技术形态学的基本思想是利用一种特殊的结构元(本质上就是卷积核)来测量或提取输入图像中相应的形状或0特征以便进一步进行图像分析和目标识别。这些处理方法基本是对二进制图像进行处理即黑白图像卷积核决定着图像处理后的效果 二、图像全局二值化
二值化:将图像的每个像素变成两种值比如0,255
参照函数: 案例代码如下:
import cv2
import numpy as np# 导入图片
img cv2.imread(6.jpg)# 二值化是对灰度图像操作
gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 注意threshold会返回两个值(一个是阈值一个是二值化处理后的图片)
thresh,dst cv2.threshold(gray,127,255,cv2.THRESH_BINARY)# 展示
cv2.imshow(dog,np.hstack((gray,dst)))# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()三、自适应阈值二值化
前提:
在前面的部分我们使用是全局闻值整幅图像采用同一个数作为闻值。当时这种方法并不适应与所有情况尤其是当同一幅图像上的不同部分的具有不同亮度时。这种情况下我们需要采用自适应闻值。此时的闻值是根据图像上的每一个小区域计算与其对应的闻值。因此在同一幅图像上的不同区域采用的是不同的闻值从而使我们能在亮度不同的情况下得到更好的结果
案例代码如下:
import cv2
import numpy as npimg cv2.imread(6.jpg)cv2.namedWindow(img,cv2.WINDOW_NORMAL)
cv2.resizeWindow(img,1920,1080)# 二值化操作是对灰度图像操作把图像转为灰度图像
gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 自适应阈值二值化只返回一个值即二值化后的结果
dst cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,3,0)# 展示
cv2.imshow(img,np.hstack((gray,dst)))cv2.waitKey(0)
cv2.destroyAllWindows()
四、腐蚀操作
腐蚀操作也是用卷积核扫描图像只不过腐蚀操作的卷积和一般都是1如果卷积核内所有像素点都是白色那么锚点也是白色。
腐蚀操作API: 案例代码如下:
import cv2
import numpy as np# 导入图片
img cv2.imread(6.jpg)# 定义核
kernel np.ones((3,3),np.uint8)
dst cv2.erode(img,kernel,iterations2)cv2.imshow(img,np.hstack((img,dst)))cv2.waitKey(0)
cv2.destroyWindow()五、获取形态学卷积核
OpenCv提供了获取卷积核的API不需要我们手工创建卷积核
案例代码如下:
import cv2
import numpy as npimg cv2.imread(6.jpg)kernel cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))# 腐蚀
dst cv2.erode(img,kernel,iterations2)
六、膨胀操作
膨胀是腐蚀的相反操作基本原理是只要保证卷积核的锚点是非0值周边无论是0还是非0值都变成非0 值
案例代码如下:
import cv2
import numpy as np# 导入图片
img cv2.imread(6.jpg)# 动态获取卷积核
kernel cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))# 膨胀操作
dst cv2.dilate(img,kernel,iterations1)# 展示图片
cv2.imshow(img,np.hstack((img,dst)))# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()
七、开运算
开运算腐蚀膨胀 案例代码如下:
import cv2
import numpy as np# 开运算腐蚀膨胀
# 开运算提供了另一种去除噪声的思路
img cv2.imread(6.jpg)kernel cv2.cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))# # 先腐蚀
# dst cv2.erode(img,kernel,iterations2)
#
# # 膨胀
# dst cv2.dilate(dst,kernel,iterations2)# 直接调用OpenCv提供的开运算API
dst cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel,iterations2)# 展示图片
cv2.imshow(img,np.hstack((img,dst)))# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如下: 八、闭运算
闭运算膨胀腐蚀
案例代码如下:
import cv2
import numpy as np# 导入图片
img cv2.imread(6.jpg)# 卷积核
kernel cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))# 闭运算
dst cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel,iterations2)# 展示图片
cv2.imshow(img,np.hstack((img,dst)))# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()