質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Q&A

解決済

1回答

6591閲覧

OpenCVで画像をずらしたい。

kokawa2003

総合スコア217

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

0グッド

0クリップ

投稿2018/07/07 06:25

OpenCVで画像の一部をちょっとずらしたいと思い、以下のコードを書きましたが、実行すると
ちょっとずれた画像でなく、何重にも重なったイメージが出ます。
ソース:

lang

1int testfinc(){ 2 //入力画像 3 cv::Mat Img = cv::imread("C:\Users\kokawa2003\Downloads\furugi6_1200.jpg", 1); 4 cv::Rect rect; 5 rect.x=237; 6 rect.y=191; 7 rect.width=30; 8 rect.height=40; 9 cv::Mat roi=Img(rect); 10 11 12 //ちょっとずらす 13 cv::Rect rect2; 14 rect2.x=rect.x+3; 15 rect2.y=rect.y+3; 16 rect2.width=rect.width; 17 rect2.height=rect.height; 18 cv::Mat dest=Img(rect2); 19 roi.copyTo(dest); 20 21 cv::imshow("res",Img); 22 cv::waitKey(0); 23 return 0; 24}

出力イメージ
イメージ説明

この画像の首のところが変換結果です。
何故こうなるのでしょうか。
私が分かるのは元画像と出力画像が同じだとまずいらしい。というぐらいです。
正しくオフセット移動するにはどうすればいいのですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
ROIの元画像とのリンクをCLONEではずずといいみたい。
int testfinc(){
//入力画像
cv::Mat Img = cv::imread("C:\Users\kokawa2003\Downloads\furugi6_1200.jpg", 1);
cv::Rect rect;
rect.x=237;
rect.y=191;
rect.width=30;
rect.height=40;
cv::Mat roi=Img(rect).clone();

//ちょっとずらす cv::Rect rect2; rect2.x=rect.x+3; rect2.y=rect.y+3; rect2.width=rect.width; rect2.height=rect.height; cv::Mat dest=Img(rect2); roi.copyTo(dest); cv::imshow("res",Img); cv::waitKey(0); return 0;

}

投稿2018/07/07 08:40

kokawa2003

総合スコア217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問