import cv2
import numpy as np
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
cv2.imshow('original',img)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将彩色图片转换为灰度图片
ret,binary=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)#将灰度图片转换为二值图片
contours,hierarchy=cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)#计算图像轮廓
n=len(contours)
contoursImg=[]
for i in range(n):
temp=np.zeros(img.shape,np.uint8)
contoursImg.append(temp)
cnt=contours[i]
mask=np.zeros(gray.shape,np.uint8)
result1=cv2.fillPoly(mask,cnt,(203,192,255))#图像边界填充
result2=cv2.fillPoly(img,[cnt],(203,192,255))#图像内部填充
cv2.imshow('result1',result1)
cv2.imshow('result2',result2)
cv2.waitKey(0)
cv2.destroyAllWindows()


算法:图像不规则填充是除了可以绘制多边形和多个多边形,还可以使用多个边来近似的画一条曲线等不规则的图像。如果图像多边形填充部分或全部位于图像外部,则将对其进行裁剪,还可以处理以亚像素精度指定的像素坐标,意味着可以将坐标作为编码为整数的定点数传递。
dst=cv2.fillPoly(img, polys, color, lineType, shift)
书籍:《准规则斑图艺术》《色彩之境:色彩美研究》
网址:http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/core/doc/drawing_functions.html
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!