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

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

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

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

OpenCV

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

Python

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

Q&A

1回答

1139閲覧

OpenCVの差分画像繰り返し処理について

Manjirou0315

総合スコア0

NumPy

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

OpenCV

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

Python

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

0グッド

0クリップ

投稿2021/11/20 03:35

前提・実現したいこと

OpenCVを用いて差分画像を作成していますが、
対象の画像が大量にある場合、当該作業をどの様に繰り返処理すれば分からず、
質問に至りました。

処理はX.bmp1とY.bmpの差分をとり、2値化するですが、
画像はXに対応するファイル名とYに対応するファイル名は可変になります。
(X, Yそれぞれ画像は大量にある)

この差分画像はZ+1の様にカウントアップして別名で保存したいのですが、
素人考えでは検討できませんでした。

該当のソースコード

import cv2
import numpy as np

im = cv2.imread('C:/Users/XXX/X.bmp')
im_t = cv2.imread('C:/Users/YYY/Y.bmp')

 im_diff = im.astype(int) - im_t.astype(int)
im_diff_abs = np.abs(im_diff)
im_diff_bin = (im_diff_abs > 32)*255

cv2.imwrite('C:/Users/ZZZ/Z.bmp', im_diff_bin)

試したこと

xecelマクロでパス+ファイル名を作成し、
ひたすら対応するコードを作成して対応していまいました。

pythonを勉強してもう少しできる幅を広げていきたく、
ご教示よろしくお願いいたします。

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

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

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

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

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

1T2R3M4

2021/11/20 03:41

python 繰り返し文 とかで調べて勉強してみては。
can110

2021/11/20 03:48

Z画像の生成ルール(XとYの組み合わせ方法)を記載ください。 たとえばX,Yそれぞれ1~3までの3つのファイルがある場合、Zの各画像はXのどれとYのどれから生成されて総数はいくつになりますか?
Manjirou0315

2021/11/20 08:04

>1T2R3M4様  コメントありがとうございます。  ファイル名が全て異なり、それらを紐づけて処理するにに手を焼いていました。  繰り返し分のところを勉強させていただきます。 >can110様  コメントありがとうございます。  以下イメージで組み合わせになります。  ①Xファイルイメージ(仮に3検体とする)   XXXフォルダ内に異なる名前で3検体入っている    →X1.bmp、X2.bmp、X3.bmpの様に異なる名前      ※画像名に連続性がない  ②Yファイルイメージ   YYYフォルダ内に異なる名前で3検体入っている    →Y1.bmp、Y2.bmp、Y3.bmpの様に異なる名前      ※画像名に連続性がない  ③ZZZフォルダ内にXとYの差分画像を保存する    →Xフォルダ内の画像とYフォルダ内の画像を紐づけて差分画像作成 差分紐づけを以下イメージとする     1つ目の処理:X1.bmpとY1.bmp差分をZ1.bmp名で保存     2つ目の処理:X2.bmpとY2.bmp差分をZ2.bmp名で保存     3つ目の処理:X3.bmpとY3.bmp差分をZ3.bmp名で保存      →X、Y、Zそれぞれ1:1の関係で処理 XとYの組み合わせをは任意の為、これをCSV等にリスト出力したものを読み込んで処理できないか?と やり方を探していた所です。 長文で申し訳ありません。 ご確認よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2021/11/20 08:18 編集

ファイルを検索してリストを生成するglobのことも一緒に気にかけてあげてください。 https://techacademy.jp/magazine/18928 と思いましたが、 >  ファイル名が全て異なり、それらを紐づけて処理するにに手を焼いていました。 だと使えないですね…。
退会済みユーザー

退会済みユーザー

2021/11/20 08:20

https://pg-chain.com/python-csv-read の「例1. CSVファイルを配列で読み取る readlines」が代わりに使えそうですね!
Manjirou0315

2021/11/20 08:36

>fourteenlength様  コメント&リンク付きありがとうございます!  readlinesでパス+画像名でやり方検討してみます。  ご回答ありがとうございました。
can110

2021/11/20 09:54

「XとYの組み合わせをは任意の為」ということはX,Yそれぞれ3検体の場合、Zの総数は3×3で9個ということでしょうか?
Manjirou0315

2021/11/20 14:11

>can110様  コメントありがとうございます。  説明が下手で申し訳ありません。  Zの総数は3になります。  XとYの組み合わせは事前にリストで決まっている型を想定しております。
guest

回答1

0

csvモジュールの使いかたを書いておきます。ご参考まで。

csv

1山田,太郎,2018山田 2海野,三郎,海野_ABCD 3大空,福岡県,0857

をinout.csvという名前のファイルに入れておきます。

python

1import csv 2 3with open('inout.csv') as csvfile: 4 reader = csv.reader(csvfile) 5 for X, Y, Z in reader: 6 X = X + '.bmp' 7 Y = Y + '.bmp' 8 Z = Z + '.bmp' 9 print(f'X: {X} Y: {Y} Z: {Z}')

を実行すると、以下のように出力されます。

text

1X: 山田.bmp Y: 太郎.bmp Z: 2018山田.bmp 2X: 海野.bmp Y: 三郎.bmp Z: 海野_ABCD.bmp 3X: 大空.bmp Y: 福岡県.bmp Z: 0857.bmp

投稿2021/11/20 11:06

ppaul

総合スコア24670

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

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

Manjirou0315

2021/11/20 19:17

>ppaul様  コメントありがとうございます。  早速検討させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問