我有一个非常大的图像,需要在其上绘制约130个标记。这些标记的点位于一个numpy数组中。我需要将数组与cv2.drawMarker一起使用
对不起,如果这很琐碎,但我只是在学习python。这些标记基于GPS坐标,我已经设法将坐标转换为像素点。这些点存储在arr中(下面提供了一个摘要)。图片尺寸为25000 * 18568。
# This file contains the marker locations (pix_lat, pix_long)
df=pd.read_csv(r'.csv', sep=',',header=0)
# Image that needs to be drawn on
img = cv2.imread(r'.jpg',1)
df1 = df[['pix_lat','pix_long']]
arr = df1.to_numpy()
cv2.drawMarker(img, tuple(arr),(0,0,255), markerType=cv2.MARKER_STAR,
markerSize=40, thickness=2, line_type=cv2.LINE_AA)
cv2.imwrite('.jpg',img)
In: arr
Out: array([[14590, 3716],
[16637, 4148],
[11074, 6578],
[17216, 4009],
当前代码为cv2.drawMarker提供了一个错误:函数正好接受2个参数(给定135个)
答案 0 :(得分:0)
您试图一次将135个元素全部传递到cv2.drawMarker函数中,这是错误的根源。
您需要遍历数组中的每个元素,并为'arr'中的每个元素调用drawMarker函数。
请参阅下文
# This file contains the marker locations (pix_lat, pix_long)
df=pd.read_csv(r'.csv', sep=',',header=0)
# Image that needs to be drawn on
img = cv2.imread(r'.jpg',1)
df1 = df[['pix_lat','pix_long']]
arr = df1.to_numpy()
#loop through each coordinate pair in arr
for item in arr:
cv2.drawMarker(img, (item[0], item[1]),(0,0,255), markerType=cv2.MARKER_STAR,
markerSize=40, thickness=2, line_type=cv2.LINE_AA)
cv2.imwrite('.jpg',img)