Source code for Images
#!/usr/bin/env python3
import os
from image_features_extraction import Image
from image_features_extraction import my_iterator
from image_features_extraction import MyException
[docs]class Images(my_iterator.my_iterator):
"""
This class loads a collection of images for extraction of features
:param folder_name: folder containing images
:type folder_name: string
:param image_file_ext: images file extensions (default=['tif','tiff'])
:type folder_name: List of strings
:returns: an instance of the object Images
:rtype: object
:example:
>>> import image_features_extraction as fe
>>> imgs = fe.Images('my_folder', image_file_ext=['tif','tiff','jpeg'])
>>> num_images = imgs.count()
"""
# to implement the class as a collection this object inherits the abstract class my_iterator
def __init__(self, folder_name, image_file_ext=['tif', 'tiff']):
super().__init__()
#self.__iterator_init__() # initializes my_iterator
self.__folder_name = folder_name
self.__image_file_ext = image_file_ext
self.__dicfiles = []
try:
# load the files image into a list
self.__load()
except MyException.MyException as e:
print(e.args)
def __load(self):
"""
load the files image into a list
"""
# check that the folder exists
if os.path.isdir(self.__folder_name) == False:
raise MyException.MyException("Error: folder name does not exist")
# store the file names
self.__dicfiles = []
files = os.listdir(self.__folder_name)
for f in files:
if self.__is_imagefile(f):
self.__dicfiles.append(f)
self.count_update(len(self.__dicfiles))
def __is_imagefile(self,file_name):
"""
checks that the file is an image
"""
# check the extension of the file
ext0 = file_name.split(".")[-1]
for ext1 in self.__image_file_ext:
if ext1 == ext0:
return True
return False
[docs] def item(self, i):
"""
returns the i-th image
:param i: the i-th image
:type i: int
:returns: :class:`Image`
:rtype: object
:example:
>>> import image_features_extraction as fe
>>> imgs = fe.Images(folder_name)
>>> img = imgs.item(1)
"""
try:
if i >= self.count():
raise MyException.MyException("error: index out of bound")
return Image.Image(os.path.join(self.__folder_name, self.__dicfiles[i]))
except MyException.MyException as e:
print(e.args)