Sto riscontrando un problema nel tradurre le funzioni di ndarray di numpy nell'equivalente chiamate OpenCV C++ per rimodellare/dividere un cv :: Mat n-dimensionale in sezioni appropriate. In particolare sto provando a convertire l'esempio OpenCV python2 "texture_flow.py" (> = OpenCV 2.4.3) in C++. Ho segnato le linee in questione nello snippet qui sotto.Traduci la matrice di numpy reshape in equivalente OpenCV
# [......]
img = cv2.imread(fn)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# simple width and height tuple
h, w = img.shape[:2]
eigen = cv2.cornerEigenValsAndVecs(gray, 15, 3)
print eigen.shape # prints: (height, widht, 6), i.e. 6 channels
# Problem 1:
# OpenCV's reshape function is not sufficient to do this.
# probably must be split into several steps...
eigen = eigen.reshape(h, w, 3, 2) # [[e1, e2], v1, v2]
print eigen.shape # prints: (height, width, 3, 2)
# Problem 2:
# I assume this is meant to get the the v1 and v2 matrices
# from the previous reshape
flow = eigen[:,:,2]
print flow.shape # prints: (height, width, 2), i.e. 2 channels
vis = img.copy()
# C++: vis.data[i] = (uchar)((192 + (int)vis.data[i])/2);
vis[:] = (192 + np.uint32(vis))/2
d = 12
# Problem 3:
# Can probably be split into 2 nested for-loops
points = np.dstack(np.mgrid[d/2:w:d, d/2:h:d]).reshape(-1, 2)
# [......]
Qualcuno può aiutarmi a tradurre le linee in questione in C++?