電子書籍の厳選無料作品が豊富!

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 )で
同じサイズだと思うのですが、なぜでしょうか。

教えてください。

A 回答 (2件)

cvRectの第3、第4引数は幅・高さで右・下座標ではないので


srcはwidth × height
reは(witdh + i - k) × (height + j - k)
になるようですが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/07 16:42

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 ));
に書き換えてやればいいと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/07 16:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!