Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing Otsu算法、Canny边缘和HOG用于文件夹中的多幅图像_Image Processing_Classification_Image Segmentation_Feature Extraction_Opencv Python - Fatal编程技术网

Image processing Otsu算法、Canny边缘和HOG用于文件夹中的多幅图像

Image processing Otsu算法、Canny边缘和HOG用于文件夹中的多幅图像,image-processing,classification,image-segmentation,feature-extraction,opencv-python,Image Processing,Classification,Image Segmentation,Feature Extraction,Opencv Python,我有500张图像,每一类26个类来执行大津,坎尼边缘和猪作为特征提取技术。欧几里得距离、余弦距离和支持向量机,使用python对其进行分类。我可以将Canny和HOG应用于单个图像。如何对所有图像执行循环,循环遍历文件夹并将结果图像保存在不同的文件夹类中?提取的特征用于欧氏距离、余弦距离和支持向量机分类 我知道glob可以使用,但我不知道如何根据我的要求使用它 import cv2 import matplotlib.pyplot import numpy as np import pandas

我有500张图像,每一类26个类来执行大津,坎尼边缘和猪作为特征提取技术。欧几里得距离、余弦距离和支持向量机,使用python对其进行分类。我可以将Canny和HOG应用于单个图像。如何对所有图像执行循环,循环遍历文件夹并将结果图像保存在不同的文件夹类中?提取的特征用于欧氏距离、余弦距离和支持向量机分类

我知道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)
根据您的代码调整此代码,祝您好运。
PD:强烈建议使用keras预处理器

我尝试了线下代码,但仍然解决了我的难题。这段代码将所有的类放在灰度之后的文件夹中,还有canny edge。我无法在文件夹中获取Hog功能。如何使用SVM、RF和余弦度量对这些特征进行分类。
import numpy as np
import cv2
import os
from imutils import paths
from keras.preprocessing.image import img_to_array

dir_imagenes = "dataset/lemons/"
print(os.listdir(dir_imagenes)) #green/ mature/
# resize 32x32
SIZE = 32
data = []
labels = [] 

imagePaths = np.array(list(paths.list_images(dir_imagenes)))
#it only load .jpeg, jpg y png.
for (i, imagePath) in enumerate(imagePaths):
    # Extraer la etiqueta en base a la ruta del archivo
    # formato asumido:
    # /path/to/dataset/{class}/{image}.jpg
    label = imagePath.split(os.path.sep)[-2]
    
    # Cargar imagen desde el disco
    img = cv2.imread(imagePath)
    
    # pasar de BGR a RGB
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
    # Redimensionar las imágenes para un procesamiento más rápido:
    img = cv2.resize(img, (SIZE, SIZE), interpolation = cv2.INTER_AREA)
    
    #Convertir a array la imagen con el pre-procesador de keras
    img = img_to_array(img)
    
    # Agregar imagenes a la lista
    data.append(img)
    labels.append(label)
    
data = np.array(data)
labels =  np.array(labels)