【发布时间】:2021-07-24 12:12:58
【问题描述】:
我有 26 个类别的每个类别的 500 张图像来执行 Otsu、Canny 边缘和 HOG 作为特征提取技术。欧几里得距离、余弦距离和支持向量机,用于使用 python 对其进行分类。我可以在单个图像上应用 Canny 和 HOG。如何使用循环遍历文件夹并将结果图像保存在不同文件夹类中的所有图像执行此操作?提取的特征用于欧几里得距离、余弦距离和SVM分类。
我知道可以使用 glob,但我不知道如何将它用于我的请求
import cv2
import matplotlib.pyplot
import numpy as np
import pandas as pd
#Otsu Algorithm
img=cv2.imread('/User/Desktop/Image/A1.jpg')
img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n",
ret, thresh1 = cv2.threshold(img, 120,300, cv2.THRESH_BINARY)
# Canny edge
edges = cv2.Canny(thresh1, 250, 300)
#creating hog features
from skimage.feature import hog
fd, hog_image = hog(resized_img, orientations=9, pixels_per_cell=(8, 8), tcells_per_block=(2, 2),
visualize=True, multichannel=False)
我尝试了以下行代码,但仍未解决我的挑战。代码在灰度之后将所有类放入一个文件夹中,并且还有 canny edge。我无法在文件夹中获取 Hog 功能。如何使用 SVM、RF 和余弦指标对这些特征进行分类。
import cv2
import numpy as np
import glob
import os
training_path='Train_Test_directory/dataset/train'
training_names = os.listdir(training_path)
# Get path to all images and save them in a list
image_paths = []
image_classes = []
class_id = 0
def imglist(path):
return [os.path.join(path, f) for f in os.listdir(path)]
#Fill the placeholder empty lists with image path, classes, and add class ID number
for training_name in training_names:
dir = os.path.join(training_path, training_name)
class_path = imglist(dir)
image_paths+=class_path
image_classes+=[class_id]*len(class_path)
class_id+=1
grey_list = []
incre=0
for image_path in image_paths:
image = cv2.imread(image_path, 0)
grey_list.append(image)
cv2.imwrite('Train_Test_directory/grey/001'+str(incre)+'.jpg',image)
incre +=1
canny_list = []
# Read in each image and convert to grayscale
incre=0
for image_path1 in grey_list:
canny = cv2.Canny(image_path1, 200, 255)
canny_list.append(canny)
cv2.imwrite('Train_Test_directory/canny/001'+str(incre)+'.jpg',canny)
incre +=1
HOG_list=[]
incre=0
#creating hog features
from skimage.transform import resize
from skimage.feature import hog
for image_path3 in canny_list:
fd, hog_image = hog(resize(image_path3, (128,64)), orientations=9,
pixels_per_cell=(8, 8),cells_per_block=(2, 2),
visualize=True, multichannel=False)
HOG_list.append(hog_image)
cv2.imwrite('Train_Test_directory/hog/001'+str(incre)+'.jpg',hog_image)
cv2.imwrite('Train_Test_directory/hog/001'+str(incre)+'.jpg',fd)
incre +=1
canny_list= np.array(canny_list)
HOG_list= np.array(HOG_list)
【问题讨论】:
-
我尝试了以下行代码,但尚未解决我的挑战。代码在灰度之后将所有类放入一个文件夹中,并且还有 canny edge。我无法在文件夹中获取 Hog 功能。如何使用 SVM、RF 和余弦指标对这些特征进行分类。
标签: image-processing classification image-segmentation feature-extraction opencv-python