我想使用polydp()检测目录中的多个图像的圆。 我声明轮廓中是否有10条以上的边,是圆形 它与单个图像效果很好。但是我使用os.path,sys处理多个图像时遇到了一些问题。
path = ''
dirs = os.listdir(path)
from PIL import Image
import os.path, sys
def poly():
for item in dirs:
fullpath = os.path.join(path,item) #corrected
if os.path.isfile(fullpath):
img_color = Image.open(fullpath)
img_gray = cv.cvtColor(img_color, cv.COLOR_BGR2HSV)
img_gray = cv.cvtColor(img_color, cv.COLOR_BGR2GRAY)
ret, img_binary = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
contours, hierarchy = cv.findContours(img_binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
for cnt in contours:
size = len(cnt)
print(size)
epsilon = 0.01 * cv.arcLength(cnt, True)
approx = cv.approxPolyDP(cnt, epsilon, True)
size = len(approx)
#print(size)
cv.line(img_color, tuple(approx[0][0]), tuple(approx[size - 1][0]), (0, 255, 0), 3)
for k in range(size - 1):
cv.line(img_color, tuple(approx[k][0]), tuple(approx[k + 1][0]), (0, 255, 0), 3)
if size > 10:
print("circle")
poly()
错误消息是
第22行,作物 img_gray = cv.cvtColor(cv.UMat,cv.COLOR_BGR2HSV) TypeError:参数'src'的预期cv :: UMat
有什么建议吗?