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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1782閲覧

cv2を使って分割された画像を結合したい(python)

desin

総合スコア5

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/11 11:25

前提・実現したいこと

pythonのcv2をつかって、任意のサイズに分割された画像を結合したいです。
下記のイメージで作りたいと思っているのですが、うまくfor文を使う方法がわかりません。
2重ループを使うと思うのですが、どのようにすれば良いでしょうか。
x_listとy_listは任意の値が入ってきて分割されている想定です。

下記のソースコードの状態で求める結果は

0test, 1test, 2test 3test, 4test, 5test

といったように結合されたopencv_hconcat.jpgです。

該当のソースコード

import cv2 def main(): # 分割された画像情報(ここは任意の値を入れたい) x_list=[0,430,860,1280] y_list=[0,360,720] # 画像読み込み split_img = [] split_img.append(cv2.imread("./0test.jpg")) split_img.append(cv2.imread("./1test.jpg")) split_img.append(cv2.imread("./2test.jpg")) split_img.append(cv2.imread("./3test.jpg")) split_img.append(cv2.imread("./4test.jpg")) split_img.append(cv2.imread("./5test.jpg")) # hconcatをforで使いたかったので1個目に代入 img1 = cv2.imread("./0test.jpg") # 横方向に結合(縦方向への結合のvconcatも組み込む想定、一度横方向の結合を終わらせてから縦に結合?) for i in range(1, len(x_list)): img1 = cv2.hconcat([img1, split_img[i]]) cv2.imwrite("./opencv_hconcat.jpg", img1) if __name__ == "__main__": main()

ソースコードがいまいちで申し訳ありませんが、宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

下記のように配列を結合することによって実現できました。

import cv2 import glob def main(): # 分割された画像情報 x_list=[0,430,860,1280] # y_list=[0,360,720] # 画像読み込み split_img = [] for file in glob.glob('./test/images/*.jpg'): split_img.append(cv2.imread(file, 1) ) # hconcatをうまく使いたかったので1個目に代入 column = len(x_list)-1 rows = [] for i in range(len(split_img)//column): imgs = [] for j in range(column): index = i*column + j imgs.append(split_img[index]) row = cv2.hconcat(imgs) rows.append(row) img = cv2.vconcat(rows) cv2.imwrite("./opencv_hconcat.jpg", img) if __name__ == "__main__": main()

投稿2020/10/12 07:42

desin

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問