• ベストアンサー

cvCopyができない

cで次のようなものを作りました ( kは定数) ( reはsrcの数倍の大きさ) for( j=0;…){ for( i=0;…){ … cvSetImageROI( src, cvRect(k, k, src->width, src->height )); cvSetImageROI( re, cvRect(i, j, src->width + i - k, src->height + j - k )); cvCopy( src, re, 0 ); }} しかし、copyのときにサイズ( 恐らくROIの) が違うというエラーが出てしまいます。 srcは( width - k ) × ( height - k )で reは(( width + i - k) - i ) × ( height + j - k) - j )で 同じサイズだと思うのですが、なぜでしょうか。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

cvRectの第3、第4引数は幅・高さで右・下座標ではないので srcはwidth × height reは(witdh + i - k) × (height + j - k) になるようですが。

hirubanasa
質問者

お礼

なるほど、第3,4引数も座標を入力していました。 ありがとうございました。

その他の回答 (1)

  • delta-22
  • ベストアンサー率40% (4/10)
回答No.2

No.1さんで大体答えが出ていますが一応補足を。 リファレンスにはこのように載っています。 cvRect( int x, int y, int width, int height ); つまり同じサイズにする場合、srcとreの第3、4引数は同じ値でなければなりません。 srcをreにコピーしたいんであれば cvSetImageROI( re, cvRect(i, j, src->width , src->height )); に書き換えてやればいいと思います。

hirubanasa
質問者

お礼

cvSetImageROI( re, cvRect(i, j, src->width , src->height )); にしたところ、きちんと動きました。 ありがとうございました。

関連するQ&A