用open检测并绘制轮廓

2024-07-03 07:11:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我的控制台中有以下错误:

File "c:/Users/Usuario/Documents/Deteccion de Objetos/contornoscongranny.py", line 13, in <module>
    cv2.drawContours(img, ctns, -1, (0, 0, 255), 2)
cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgproc\src\drawing.cpp:2509: error: (-215:Assertion failed) npoints > 0 in function 'cv::drawContours'

这是我的密码:

import cv2
import numpy as np

camino= "C:/Users/Usuario/Documents/Deteccion de Objetos/123.jpg"
img = cv2.imread("C:/Users/Usuario/Documents/Deteccion de Objetos/123.jpg")

grises= cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

bordes= cv2.Canny(grises, 100, 200)

_, ctns, = cv2.findContours(bordes, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

cv2.drawContours(img, ctns, -1, (0, 0, 255), 2)
print ('Numero de contornos es ', len(ctns))
texto= 'Contornos encontrados ' + str(len(ctns))

cv2.putText(img, texto, (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.7,  
    (255, 0, 0), 1)


cv2.imshow('Bordes', bordes)
cv2.imshow('Imagen', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我该怎么解决?你知道吗


Tags: inimportimgdeerrorcv2opencvusers
1条回答
网友
1楼 · 发布于 2024-07-03 07:11:54

为了绘制等高线,我们可以使用:

ctns = cv2.findContours(bordes, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
ctns = ctns[0] if len(ctns)==2 else ctns[1]
for c in ctns:
    cv2.drawContours(img,[c], -1,(0,0,255),2)

这将在图像上绘制轮廓。如果你能分享一个样本图像,你正试图使轮廓,我将能够帮助更多

相关问题 更多 >