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

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

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

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

Python

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

Q&A

解決済

2回答

1086閲覧

Pyhtonを使って大量の画像を輪郭抽出するプログラムを組みたい。

k.nirasawa

総合スコア8

OpenCV

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

Python

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

0グッド

0クリップ

投稿2021/08/11 05:05

編集2021/08/11 09:40

Canny検出器を使ったプログラムを作ったのですが、1枚ずつしか処理できず、効率よく繰り返し文などを使って大量の写真を処理したいと考えています。しかし、どこに繰り返し文を入れればよいかわからない状況です。

import

1import numpy as np 2 3def main(): 4 img = cv2.imread(r"C:\Users\niras\Desktop\NNC sotuken\2021-04-10\data\full.py\02.jpg") 5 6 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) 7 8 edge2 = cv2.Canny(gray, 100,200) 9 10 cv2.imwrite(r"C:\Users\niras\Desktop\2021-07-21\data\full.py\02.jpg", edge2) 11 12 cv2.imshow('gray',edge2) 13 cv2.waitKey(0) 14 15 16if __name__ == "__main__": 17 main() 18コード

現状のコードはこちらになります。

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

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

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

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

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

TakaiY

2021/08/11 06:11

このソースはこのままでは動きません。ということは、実際に動かしているソースだとは思えません。 実際のソースに差し替えをお願いします。
k.nirasawa

2021/08/11 07:00

import cv2 import numpy as np def main(): img = cv2.imread(r"C:\Users\niras\Desktop\NNC sotuken\2021-04-10\data\full.py\02.jpg") gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) edge2 = cv2.Canny(gray, 100,200) cv2.imwrite(r"C:\Users\niras\Desktop\2021-07-21\data\full.py\02.jpg", edge2) cv2.imshow('gray',edge2) cv2.waitKey(0) if __name__ == "__main__": main() すみません。こちらでした。
jbpb0

2021/08/11 08:48

正しいコードはここに書くのではなく、質問のコードを編集してください
k.nirasawa

2021/08/11 09:41

すいません。変更しました。
guest

回答2

0

  • 処理するファイルの一覧を取得するには、pathlib.glob や glob.globを使います。

  • 出力するファイルの名前を入力するファイルから生成する手段を考えます。 パスの操作はpathlibが便利です。

  • 処理するファイルのパスと出力するファイルのパスを受け取って、処理後のファイルを生成する関数を作ります。基本的には現在のmain関数と同じでいいでしょう。

  • main処理として、処理するファイルの取得と、そのリストでループして、出力ファイル名の生成と、生成した関数の呼び出しをする処理を作ります。

投稿2021/08/11 06:18

TakaiY

総合スコア13790

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

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

0

ベストアンサー

TakaiYさんの回答で終わっていると思うのですが、全体構成がわからないようですので補足します。

python

1def convert_image(in_filename, out_filename): 2 ''' in_filename: str such as r"C:\Users\niras\Desktop\NNC sotuken\2021-04-10\data\full.py\02.jpg" 3 out_filename: str such as r"C:\Users\niras\Desktop\2021-07-21\data\full.py\02.jpg"''' 4# 何らかの処理 5 6def convert_images(filelist): 7 ''' filelist: whose each element is a list such as (in_filename, out_filename)''' 8 for in_filename, out_filename in filelist: 9 convert_image(in_filename, out_filename) 10 11def get_in_filelist(input_dir, extension='jpg'): 12 ''' input_dir: directory of input files 13 Returns 14 ------- 15 in_filelist: list of in_filenames''' 16 from glob import glob 17# 何らかの処理 18 19def get_filelist(in_filelist, output_dir): 20 ''' in_filelist: list of in_filenames 21 input_dir: directory of input files 22 Returns 23 ------- 24 filelist: whose each element is a list such as (in_filename, out_filename)''' 25 from os.path import basename, join 26# 何らかの処理 27 28def main(input_dir, output_dir): 29 in_filelist = get_in_filelist(input_dir) 30 filelist = get_filelist(in_filelist, output_dir) 31 convert_images(filelist) 32 33

これを埋めていけば目的のコードになります。

投稿2021/08/17 09:36

ppaul

総合スコア24670

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

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

k.nirasawa

2021/08/18 02:47

回答ありがとうございました。やってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問