Python OpenCV使用图像的中心坐标列表绘制多个圆

2024-05-23 16:31:01 发布

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

首先,我不确定是否应该使用pandas或numpy来读取csv文件中的坐标列表? 第二,当我尝试其中一个时,我被OpenCV函数cv2.circle(图像,(x,y),25,(0255,0))卡住了,原因是(x,y)只接受单个整数,另一个原因是它只接受这个函数的单个整数!我的问题是这张图片有多个坐标,另一个问题是我有浮点数

import numpy as np
from PIL import Image
import cv2
import pandas as pd
import math
dfa = pd.read_csv("filter_14.csv")
image = cv2.imread("image_1602.png")
x = dfa['project_image_X'].astype(int)
y = dfa['project_image_Y'].astype(int)
cv2.circle(image,(x,y),25,(0,255,0))
cv2.imshow('test image', image)
cv2.waitKey(0)**

这是错误消息:

回溯(最近一次呼叫最后一次): 文件“image_print.py”,第23行,在 cv2.圆(图像,(x,y),25,(0255,0)) 包装器中的文件“/usr/local/lib/python3.6/dist-packages/pandas/core/series.py”,第131行 raise TypeError(“无法将序列转换为”{0}”。格式(str(converter))) TypeError:无法将序列转换为<;“int”类>


Tags: 文件csv函数图像imageimportnumpypandas
1条回答
网友
1楼 · 发布于 2024-05-23 16:31:01

如果没有csv文件的内容很难说,但是看起来您正在传递整个系列来绘制一个圆,而不是一个(x,y)值对。 尝试循环遍历数据帧中的所有值:

import numpy as np
from PIL import Image
import cv2
import pandas as pd
import math
dfa = pd.read_csv("filter_14.csv")
image = cv2.imread("image_1602.png")
x = dfa['project_image_X'].astype(int)
y = dfa['project_image_Y'].astype(int)
for idx in dfa.index:
    x, y = dfa.loc[idx, ['project_image_X', 'project_image_Y']]
    cv2.circle(image,(x,y),25,(0,255,0))
cv2.imshow('test image', image)
cv2.waitKey(0)**

如果问题仍然存在,请查看csv文件的示例

相关问题 更多 >