我正在尝试使用cv2.drawContoursOpenCV中的功能显示填充轮廓。我已经从Canny检测得出的边缘图像中开发出轮廓列表,并且正在寻找RETR_EXTERNAL启用了层次结构定义的轮廓。但是,我遇到了一个问题,尽管-1在cv2.drawContours命令中使用了标志来指示填充的轮廓,但仅显示轮廓本身(即边缘)。例如:
mask = np.zeros(rawimg.shape, np.uint8)
cv2.drawContours(mask, contours[246], -1, (0,255,255), -1)
Run Code Online (Sandbox Code Playgroud)
结果仅显示轮廓246的轮廓。由于我仅检索外部轮廓,因此我认为看不到每个边缘处的内部轮廓和外部轮廓之间的差异,因此我对为什么显示轮廓但不填充为轮廓感到有些困惑该-1标志会建议它应该。
编辑: 完整的代码包含在下面。问题出在以下一行:cv2.drawContours(mask,cnt,2,(0,255,255),-1)虽然这是Dan所建议的格式,但结果如下图所示:
cv2.drawContours(mask, cnt, -1, (0,255,255), -1)
Run Code Online (Sandbox Code Playgroud)
轮廓将像以前一样打印,但是轮廓仍然没有填充,因为命令末尾的-1标志表明应该填充轮廓。
测试图片:
import os
import cv2
import numpy as np
from matplotlib import pyplot as plt
import copy as cp
path = 'C:\\Users\\...deleted...\\Desktop\\testimage6.jpg'
#Determine largest contour in the image
def maxContour(contours):
cnt_list = np.zeros(len(contours))
for i in range(0,len(contours)):
cnt_list[i] = cv2.contourArea(contours[i])
max_value = np.amax(cnt_list)
max_index = np.argmax(cnt_list)
cnt = …Run Code Online (Sandbox Code Playgroud)