**Python及びOpenCVを使用して
ある特定の画像フォルダ内の画像に対して円の重心を調べ結果を報告するプログラムを作りたいのですが。動きません。**
2つ作ったのですが。
どちらも動きません。
作ったプログラム
1つ目
/////////////////////////////////////////
import glob
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
/// 設定
img_dir = '' # 入力ディレクトリ
out_dir = '' # 出力ディレクトリ
// 指定したフォルダの画像ファイルの一覧を取得する。
types = [ '*.jpg']
paths = []
for t in types:
paths.extend(glob.glob(os.path.join(img_dir, t)))
os.makedirs(out_dir, exist_ok=True)
for p in paths:
img = Image.open(p) # 読み込む。
//以下各画像に対する処理を記載する
mu = cv2.moments(img, False)
x,y= int(mu["m10"]/mu["m00"]) , int(mu["m01"]/mu["m00"])
cv2.circle(img, (x,y), 4, 100, 2, 4)
plt.imshow(img)
plt.colorbar()
plt.show()
print(x,y)
///////////////////////////////////////////////////
2つ目
//////////////////////////////////////////////////
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
def main():
data_dir_path = u"./画像ディレクトリ名/"
file_list = os.listdir(r'./画像ディレクトリ名/')
for file_name in file_list: root, ext = os.path.splitext(file_name) if ext == u'.png' or u'.jpeg' or u'.jpg': abs_name = data_dir_path + '/' + file_name image = cv.imread(abs_name)
//以下各画像に対する処理を記載する
mu = cv2.moments(img, False)
x,y= int(mu["m10"]/mu["m00"]) , int(mu["m01"]/mu["m00"])
cv2.circle(img, (x,y), 4, 100, 2, 4)
plt.imshow(img)
plt.colorbar()
plt.show()
print(x,y)
if name == 'main':
main()
///////////////////////////////////////////////////////
2つ目のエラー
NameError: name 'img' is not defined
各画像に対する処理に入れる部分をフォルダ名にすればいいんですかね?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。