如何解决如何从csv文件在图像上绘制轮廓
我需要从 CSV 文件中绘制轮廓,我单独获取每个 x、y 列表,但我需要创建元组以将它们用于折线函数,但我得到 'int' object is not iterable
!
代码:
import numpy as np
import cv2
import matplotlib.pyplot as plt
image5= cv2.imread("C:/Users/Pc/Desktop/code prjt/5_Vesicule.jpg")
cv2.imshow("im",image5)
cv2.waitKey()
centrev5 = pd.read_csv("C:/Users/Pc/Desktop/code prjt/centrev5.csv",sep=";")
print(centrev5)
cx=int(centrev5.get(['centreX'][0]) )
cy =int(centrev5.get(['centreY'][0]))
image = cv2.circle(image5,(cx,cy),radius=0,color=(255,0),thickness=10)
cv2.imshow("centre",image)
cv2.waitKey()
point5 = pd.read_csv("C:/Users/Pc/Desktop/code prjt/point5.csv",sep=";")
print(point5)
for i in range(len(point5)):
x=int(point5.values[i][1])
y=int(point5.values[i][2])
# transform x,y vectors to tuples
c = [tuple(x),tuple(y)]
img = cv2.polylines(image5,c,1,(0,255),4)
cv2.imshow("contour",image5)
cv2.waitKey()
#print(c)
#c = [i for i in zip(x,y)]
#c = list(zip(x,y))
#[(x[i],y[i]) for i in range(min(len(x),len(y)))]
the error is 'int' object is not iterable
解决方法
您的问题是您正试图将 int 转换为她的 tuple(x)
元组。 x 被定义为 int
。 int
不可迭代。所以它不能直接转换为 tuple
。如果您想要一个仅包含 x
的元组,请使用 (x,)
(注意尾随 ,
)。
cv2.polylines()
期望它的第二个参数采用以下形式
[(x1,y1),(x2,y2),...)]
然后将绘制多边形连接列表中的所有点。
这意味着您不需要 for 循环。它已集成在 cv2.polylines()
中。见Here
为了使您的数据格式正确,我建议如下:
points = [(value[1],value[2]) for value in point5.values]
然后像这样画线:
cv2.polylines(image5,points,1,(0,255),4)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。