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

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

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

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

7700閲覧

画像の合成: 重複した部分を捨て、2枚の画像を合成する方法

zuzu1984

総合スコア31

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

2クリップ

投稿2019/02/24 07:50

画像の合成を行いたいです。
・2枚の画像を合成
・重複個所はimg01を優先し、img01とimg02が重複している個所はimg02の重複個所を捨てる

ただ単純に2枚の画像を並べて合成はできるのですが(こんな段階ですみません)、どうすれば、上記のような合成が実現できるでしょうか。
何卒ご教授ください。

イメージ説明

現段階で、横に並べただけの画像
イメージ説明

import cv2 from PIL import Image, ImageFilter img01 = Image.open('cat_left01.jpg') img02 = Image.open('cat_right01.jpg') def Synthesis(img01, img02): dst = Image.new('RGB', (img01.width + img02.width, img01.height)) dst.paste(img01, (0, 0)) dst.paste(img02, (img01.width, 0)) return dst Synthesis(img01, img02).save('pillow_cat01.jpg')

完成形イメージです
イメージ説明

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

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

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

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

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

guest

回答2

0

ベストアンサー

cv2.Stitcher_create() をお使いください (OpenCV 4)

bash

1pip install --upgrade opencv-contrib-python

python

1import cv2 2 3# 画像を読み込む。 4img1 = cv2.imread('a.png') 5img2 = cv2.imread('b.png') 6 7# パノラマ合成する。 8stitcher = cv2.Stitcher_create(True) 9status, stitched = stitcher.stitch([img1, img2]) 10 11# 保存する。 12cv2.imwrite('output.png', stitched)

イメージ説明

イメージ説明

イメージ説明

投稿2019/02/24 08:09

編集2019/02/25 02:40
tiitoi

総合スコア21956

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

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

zuzu1984

2019/02/24 10:52

解決策があったんだと、とっても嬉しかったです! ですが、実行したところ<IPython.core.display.Image object>と表示されました。 調べてみると、IPythonの問題らしく(?)、Anacondaの仕様も考えたのですが、PCでうまく設定できず。。。 残念ですが、他の方法も探してみます。 こういう方法があるんだとわかっただけでも、とっても勉強になりました。 ありがとうございます。
tiitoi

2019/02/24 11:02 編集

コードを修正しました。 その部分は今回の課題とは関係なく、確認のために画像を表示しているだけなので消しました。 これでどうでしょうか?
zuzu1984

2019/02/24 13:41

回答ありがとうございます。 コードを書き換えて頂けるなんて思ってもみませんでした。 重ね重ね無知な質問ですみません。 >cv2.Stitcher_create() をお使いください (OpenCV 4) とありますが、どういう意味でしょうか? 当方、python等の基礎もなく、今までも無理やりこなしてきた感があります。。。 他の方が聞いたら、すぐわかることなんだと思うのですが、すみません。
tiitoi

2019/02/24 14:02 編集

opencv というライブラリが必要なので、なければコンソールで pip install opencv-python-contrib としてインストールしてから、このコードをコピペすれば動くはずです。(画像のファイルパスは適宜変更してください)
fana

2019/02/25 01:30

(pythonが読めない人の純粋な疑問なのですが,img1やimg2を引数(?)に取るような記述が無くてもいけるんでしょうか?)
tiitoi

2019/02/25 02:41

コードを修正した際に消えてしまっていたので、修正しました。 ご指摘ありがとうございます。
guest

0

OpenCVにそのような機能があるみたいです
Python+OpenCVでstitching パノラマ画像生成をやってみた
どうやら写真の中で特徴量を見つけてAffine変換などをしてつなぎ合わせているみたいです
Python OpenCV パノラマ
などで調べると多くヒットするので他にも調べてみるといいかもしれないです(^^)/

投稿2019/02/24 08:05

ko.tu

総合スコア178

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問