hans

hans

【Opencv】cv2.rectangleエラー


Error Message:

TypeError: 必要な引数 'rec' (pos 2) が見つかりません

ソースコード:

ori_img = img[0].detach().cpu().numpy()
ori_img = (ori_img*127.5 + 127.5).transpose([1,2,0]).astype(np.uint8)
x1, y1, x2, y2 = int(bb[0]), int(bb[1]), int(bb[2]), int(bb[3])
ori_img = cv2.rectangle(img=ori_img, pt1=(x1, y1), pt2=(x2, y2), color=(255, 255, 0), thickness=2)

上記のエラーが発生しましたが、インターネットで検索すると、99% の場合、頂点の座標をすべて int 型に強制変換するように指示されます。しかし、私の場合、既に強制変換を行っているのに問題が発生しています。

また、ori_img も uint8 型に変換していますので、問題はないはずです。しかし、実際の問題は ori_img で発生しています。

以下のコードは修正後のコードであり、np.ascontiguousarray という関数を呼び出しています。インターネットで調べたところ、次のように説明されています:
非連続なメモリに格納された配列を連続なメモリに変換し、実行速度を向上させます。

直訳すると理解しやすいですが、なぜ Tensor から numpy 行列に変換されたものがメモリ上で非連続になるのかはよくわかりません。

ori_img = img[0].detach().cpu().numpy()
ori_img = (ori_img*127.5 + 127.5).transpose([1,2,0]).astype(np.uint8)
ori_img = np.ascontiguousarray(ori_img)
x1, y1, x2, y2 = int(bb[0]), int(bb[1]), int(bb[2]), int(bb[3])
ori_img = cv2.rectangle(img=ori_img, pt1=(x1, y1), pt2=(x2, y2), color=(255, 255, 0), thickness=2)
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。