在黑色背景下,将照片内封闭空心图案的空心区域染色
import cv2
import numpy as np
img = cv2.imread('E:\Python-workspace\OpenCV\OpenCV/beyond.png',1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片,0表示灰度照片
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_,th = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 寻找轮廓,使用cv2.RETR_CCOMP寻找内外轮廓
image, contours, hierarch = cv2.findContours(th, cv2.RETR_CCOMP, 2)
# 找到内层轮廓并填充hierarchy = np.squeeze(hierarch)#使用np.squeeze压缩hierarch的成为一维数据for i in range(len(contours)):# 存在父轮廓,说明是里层if (hierarchy[i][3] != -1):cv2.drawContours(img, contours, i, (255, 255, 0), -1)#这里的(255,255,0)代表cyan,也可自定义
cv2.imwrite('E:\Python-workspace\OpenCV\OpenCV/yanyu.jpg', img)
效果如下:
运行前:
运行后: