opencv python 图片腐蚀和膨胀
2017-07-18 23:04
85 查看
参考:http://blog.csdn.net/yellow_red_people/article/details/53181239
定义一个5x5的结构:kernel=np.uint8(np.zeros((5,5)))
(1)腐蚀操作:
定义了一个5×5的十字形结构元素 其实是一个5x5的矩阵,我们知道在图片的腐蚀过程,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”操作,如果都为1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像减小一圈。
使用的函数:cv2.erode(img,kernel);
(2)膨胀操作:
使用同样的结构,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”操作,如果出现1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像扩大一圈。
使用的函数:cv2.dilate(img,kernel)
两张图片相减得到图片的边缘。
代码:
#encoding=utf-8
import cv2
import numpy as np
#定义了一个5×5的十字形结构元素,
#用结构元素与其覆盖的二值图像做“与”操作
#如果都为1,结果图像的该像素为1。否则为0
#腐蚀处理的结果是使原来的二值图像减小一圈。
#00100
#00100
#11111
#00100
#00100
kernel=np.uint8(np.zeros((5,5)))
for x in range(5):
kernel[x,2]=1;
kernel[2,x]=1;
#读入图片
img = cv2.imread(r'E:\data\4.jpg',0)
#腐蚀图像
eroded=cv2.erode(img,kernel);
#膨胀图像
dilated = cv2.dilate(img,kernel)
#将两幅图像相减获得边,第一个参数是膨胀后的图像,第二个参数是腐蚀后的图像
result = cv2.absdiff(dilated,eroded);
#取反
x=0;
y=0;
width=result.shape[0]
height=result.shape[1]
while x<width:
y=0
while y<height:
result[x][y]=255-result[x][y]
y=y+1;
x=x+1
cv2.imwrite("E:\data\eroded.jpg", eroded)
cv2.imwrite("E:\data\dilated.jpg", dilated)
cv2.imwrite("E:\data\result.jpg", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
定义一个5x5的结构:kernel=np.uint8(np.zeros((5,5)))
(1)腐蚀操作:
定义了一个5×5的十字形结构元素 其实是一个5x5的矩阵,我们知道在图片的腐蚀过程,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”操作,如果都为1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像减小一圈。
#00100 #00100 #11111 #00100 #00100
使用的函数:cv2.erode(img,kernel);
(2)膨胀操作:
使用同样的结构,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”操作,如果出现1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像扩大一圈。
使用的函数:cv2.dilate(img,kernel)
两张图片相减得到图片的边缘。
代码:
#encoding=utf-8
import cv2
import numpy as np
#定义了一个5×5的十字形结构元素,
#用结构元素与其覆盖的二值图像做“与”操作
#如果都为1,结果图像的该像素为1。否则为0
#腐蚀处理的结果是使原来的二值图像减小一圈。
#00100
#00100
#11111
#00100
#00100
kernel=np.uint8(np.zeros((5,5)))
for x in range(5):
kernel[x,2]=1;
kernel[2,x]=1;
#读入图片
img = cv2.imread(r'E:\data\4.jpg',0)
#腐蚀图像
eroded=cv2.erode(img,kernel);
#膨胀图像
dilated = cv2.dilate(img,kernel)
#将两幅图像相减获得边,第一个参数是膨胀后的图像,第二个参数是腐蚀后的图像
result = cv2.absdiff(dilated,eroded);
#取反
x=0;
y=0;
width=result.shape[0]
height=result.shape[1]
while x<width:
y=0
while y<height:
result[x][y]=255-result[x][y]
y=y+1;
x=x+1
cv2.imwrite("E:\data\eroded.jpg", eroded)
cv2.imwrite("E:\data\dilated.jpg", dilated)
cv2.imwrite("E:\data\result.jpg", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关文章推荐
- opencv python 学习第三天 图片腐蚀和膨胀
- OpenCV实现图片的膨胀和腐蚀
- python opencv3图像膨胀和腐蚀
- opencv 图片基本处理(灰度化,反色,二值化,膨胀腐蚀以及ROI的copy等)
- Opencv 基础学习二(对图片进行腐蚀处理、膨胀处理)
- opencv for python (14) 形态学转换(图像腐蚀、图像膨胀、开运算、闭运算、形态学梯度、礼帽、黑帽)
- opencv-python中的腐蚀与膨胀函数
- 使用python编写opencv程序(安装及载入图片)
- python使用opencv读取图片的实例
- python-opencv实现切变换,不裁减图片
- python小练习:Opencv中将图片转为字符画
- opencv学习笔记第五章:基于形态学运算的图像变换(1)形态学运算进行腐蚀和膨胀
- Opencv 学习笔记之膨胀/腐蚀综合实例
- OpenCV(6)-腐蚀和膨胀
- opencv for python (9) 图片的扩展和缩放 批量处理图片
- python opencv imshow 图片不显示 not responding
- 用 Python 和 OpenCV 检测图片上的条形码
- 用Python和OpenCV创建一个图片搜索引擎的完整指南 The complete guide to building an image search engine with Python and
- Qt 5.3 下OpenCV 2.4.11 开发(13)腐蚀与膨胀
- Opencv,腐蚀,膨胀,轮廓检测,轮廓外接多边形