У меня есть контур фигуры cnt
, мне нужно найти его внутри 2D-массива, у меня есть переменная target_index, она используется для нахождения требуемой зоны, но мне нужно найти в ней контур cnt
.
import numpy as np
x = np.linspace(0,1000, int(1000/50))
y = np.linspace(0,1000, int(1000/50))
X,Y = np.meshgrid(x,y)
source = np.column_stack([X.ravel(), Y.ravel()]).astype(int)
destination = source.copy()
cnt = [[550, 42],
[600, 42],
[690, 273],
[640, 273]]
# Need to use cnt here
target_index = np.where(np.logical_and(destination[:,1]==789,destination[:,0]>=421))
destination[target_index]
scope = destination[target_index]
scope[:,0] = scope[:,0] + 10
destination[target_index] = scope
destination[target_index]
# Remap
grid_x, grid_y = np.mgrid[0:800, 0:800]
grid_z = griddata(source, destination, (grid_x, grid_y), method='cubic')
map_x = np.append([], [ar[:,1] for ar in grid_z]).reshape(800,800).astype('float32')
map_y = np.append([], [ar[:,0] for ar in grid_z]).reshape(800,800).astype('float32')
warped_image = cv2.remap(img, map_x, map_y, cv2.INTER_CUBIC)
cv2.drawContours(warped_image,[cnt],0,(0,0,0),2)
Можно использовать и другие методы, но предпочтительным является np.where
.