From 2f2e961ba364e87537c0e68854b4246c089a3022 Mon Sep 17 00:00:00 2001 From: s495728 Date: Thu, 2 May 2024 23:29:00 +0200 Subject: [PATCH] Add dataManager --- .gitignore | 2 ++ DataManager.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 .gitignore create mode 100644 DataManager.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6f951ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +data +archive.zip \ No newline at end of file diff --git a/DataManager.py b/DataManager.py new file mode 100644 index 0000000..d837ec8 --- /dev/null +++ b/DataManager.py @@ -0,0 +1,55 @@ +import glob +import shutil +import cv2 +from zipfile import ZipFile +import os +import wget + +mainPath="data/" +pathToTrainAndValidDate = mainPath + "%s/**/*.*" +pathToTestDataset = mainPath + "/test" +originalDatasetName = "original dataset" + +class DataManager: + + def downloadData(self): + if not os.path.isfile("archive.zip"): + wget.download("https://storage.googleapis.com/kaggle-data-sets/78313/182633/bundle/archive.zip?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=gcp-kaggle-com%40kaggle-161607.iam.gserviceaccount.com%2F20240502%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20240502T181500Z&X-Goog-Expires=259200&X-Goog-SignedHeaders=host&X-Goog-Signature=87d0661313e358206b6e10d44f135d41e23501d601e58b1e8236ca28a82ccc434534564b45baa84c4d829dd1995ff384d51fe5dba3f543d00eb0763169fd712c6c8f91bb4f298db38a19b31b2d489798a9723a271aa4108d7b93345c5a64a7ef00b9b8f27d1d5f728e373c870f0287eb89bc747941f0aeeb4703c288059e2e07b7ece3a83114a9607276874a90d4ec96dde06fddb94a0d3af72848565661b1404e3ea248eeebf46374daada7df1f37db7d62b21b4ac90706ea64cc74200a58f35bfe379703e7691aeda9e39635b02f58a9f8399fa64b031b1a9bccd7f109d256c6f4886ef94fcdc11034d6da13c0f1d4d8b97cabdd295862a5107b587824ebe8") + + def unzipData(self, fileName, pathToExtract): + if not os.path.exists(mainPath): + os.makedirs("data") + ZipFile(fileName).extractall(mainPath + pathToExtract) + shutil.move("data/original dataset/test/test", "data", copy_function = shutil.copytree) + shutil.move("data/original dataset/New Plant Diseases Dataset(Augmented)/New Plant Diseases Dataset(Augmented)/train", "data/original dataset/train", copy_function = shutil.copytree) + shutil.move("data/original dataset/New Plant Diseases Dataset(Augmented)/New Plant Diseases Dataset(Augmented)/valid", "data/original dataset/valid", copy_function = shutil.copytree) + shutil.rmtree("data/original dataset/New Plant Diseases Dataset(Augmented)") + shutil.rmtree("data/Detection-of-plant-diseases/data/original dataset/test") + + def writeImageToGivenPath(self, image, path): + os.makedirs(path.rsplit('/', 1)[0], exist_ok=True) + cv2.imwrite(path, image) + + def resizeDataset(self, soruceDatasetName, width, height): + if not os.path.exists(mainPath + "resized dataset"): + for file in glob.glob(pathToTrainAndValidDate % soruceDatasetName, recursive=True): + pathToFile = file.replace("\\","/") + image = cv2.imread(pathToFile) + image = cv2.resize(image, (width, height)) + newPath = pathToFile.replace(soruceDatasetName,"resized dataset") + self.writeImageToGivenPath(image,newPath) + + def sobelx(self, soruceDatasetName): + if not os.path.exists(mainPath + "sobel dataset"): + for file in glob.glob(pathToTrainAndValidDate % soruceDatasetName, recursive=True): + pathToFile = file.replace("\\","/") + image = cv2.imread(pathToFile) + sobel = cv2.Sobel(image,cv2.CV_64F,1,0,ksize=5) + newPath = pathToFile.replace(soruceDatasetName,"sobel dataset") + self.writeImageToGivenPath(sobel,newPath) + +dataManager = DataManager() +dataManager.downloadData() +dataManager.unzipData("archive.zip","original dataset") +dataManager.resizeDataset("original dataset", 64, 64) +dataManager.sobelx("resized dataset") \ No newline at end of file