cv2.error: OpenCV(4.5.2) : -1 : error: (-5:Bad argument) in function ‘rectangle‘

結論

引数をキャスト変換することによってエラーが解消されました!

ex) cv2.rectangle(引数1,(int(引数2),int(引数3),int(引数4),int(引数5)),(引数6),引数7)

解説

エラー内容について

本来なら長方形を描画したいのだが、プログラムを実行した際に以下のようなエラーが発生しました。

cv2.rectangleの部分がエラー

詳細な日本語訳は分からないのですが、下の方の「index 0 has a wrong type」という文から配列の0番目に入っている値がcv2.rectangleでは扱えないタイプなのではないかと推測しました。

cv2.rectangle()の使い方

まず、この関数の引数が何を表すのか具体的に説明していきます。

  • 引数1:長方形を描画する画像データ
  • 引数2~5:描画する長方形の左上x,y座標(引数2,3)と幅(引数4)、高さ(引数5)
  • 引数6:描画する長方形の色を(b,g,r)で指定
  • 引数7:描画する長方形のライン幅の指定

ここで注意すべきだったのが引数2~5の値ををint型で指定すべきだったことです。

実際、私はそこの引数の値を配列の0番からから順に取得して代入していくプログラムだったのですが、配列の値が少数(double型)だったためエラーが起こりました。

以下のように整数を引数に代入することでエラーなく描画されました。

ex)cv2.rectangle(result,(616,556,78,259),(255,0,0),3)

青い長方形で描画されているのが例で実行した結果

まとめ

今回はcv.2rectangleのエラーについて解説しました。引数の型に指定があることは意外と見落としがちかなと個人的には思います。得られた情報を配列に格納してその情報を引数に使おうとするとなるとなおさらですよね….

私もプログラミングスキルはまだまだで分からないことだらけなので実行する度にエラーがでます。その原因を調べ解決できたら、今後もこのような形で投稿することにより一人でも問題解決のヒントに繋がればなと思います。(P.Sこれが初投稿です)

Copied title and URL