TypeError: Expected Ptr<cv::UMat> for argument 'src' エラーの対処法

OpenCVのremap関数を用いた際にこのエラーが出た。

具体的には

warped_img2 = cv2.remap(image1, flow, None, cv2.INTER_LINEAR)

の様なコードだ。

色々調べた結果、入力が間違っている可能性があることがわかった。

自分の場合は例えば

print(flow_up.shape)

の出力は

torch.Size([1, 2, 240, 416])

となっており、pytorchのtensorを入力としてしまっていた。

またC、H、Wの順番も間違っていた。

 

flow = flow.squeeze().cpu().numpy().transpose(1,2,0)
image1 = image1.squeeze().cpu().numpy().transpose(1,2,0)

を行う事で例えばflowは

(240, 416, 2)

になり、エラーも出なくなった。