Commit d5869921 authored by Diego André Sant'Ana's avatar Diego André Sant'Ana 🤞

Ajustes para o python 2 ainda falta resolver para python3

parent fb022b34
......@@ -24,7 +24,7 @@ import cv2
from .extractor import Extractor
from tqdm import tqdm
import sys
from sys import version_info
if not sys.warnoptions:
import warnings
warnings.simplefilter("ignore")
......@@ -256,7 +256,7 @@ class FeatureExtractor(object):
output_file : string
Path to output file.
"""
if version_info[0] >= 3:
arff = open(output_file, 'wb')
arff.write(bytes(str("%s %s\n\n" % ('@relation', relation)), 'utf-8'))
......@@ -273,6 +273,24 @@ class FeatureExtractor(object):
arff.write(bytes(str(line + "\n"), 'utf-8'))
arff.close()
else:
arff = open(output_file, 'wb')
arff.write("%s %s\n\n" % ('@relation', relation))
for label, t in zip(labels, types):
arff.write("%s %s %s\n" % ('@attribute', label, t))
arff.write("%s %s {%s}\n\n" % ('@attribute', 'classe', ', '.join(classes)))
arff.write('@data\n\n')
for instance in data:
instance = map(str, instance)
line = ",".join(instance)
arff.write(line + "\n")
arff.close()
#method to equalize size of images
def equalize_size_image(self, image):
......
......@@ -17,7 +17,8 @@ from util.utils import ImageUtils
from skimage.measure import regionprops, moments, moments_central
from skimage.morphology import label
import numpy as np
from .extractor import Extractor
from extractor import Extractor
import math
class RawCentralMoments(Extractor):
"""Calculate raw and central set of image moments."""
......@@ -34,7 +35,7 @@ class RawCentralMoments(Extractor):
Parameters
----------
image : opencv image
Image to be analyzed.
image to be analyzed.
Returns
-------
......@@ -43,22 +44,25 @@ class RawCentralMoments(Extractor):
"""
#raw_moments = moments(image)
image_binary = ImageUtils.image_binary(image, bgr = True)
m = measure.moments(image_binary)
m=np.nan_to_num(m)
values_m = [m[p, q] for (p, q) in self._moments_order]
labels_m = [M+str(p)+str(q) for M,(p,q) in zip(['M_'] * len(self._moments_order), self._moments_order)]
labels_m = [M+str(p)+str(q) for M,(p,q) in zip(['M_'] * len(self._moments_order), self._moments_order)]
row = m[0, 1] / m[0, 0]
col = m[1, 0] / m[0, 0]
mu = measure.moments_central(image_binary, center=(row, col), order=3)
mu=np.nan_to_num(mu)
values_mu = [mu[p, q] for (p, q) in self._moments_order]
labels_mu = [M+str(p)+str(q) for M,(p,q) in zip(['Mu_'] * len(self._moments_order), self._moments_order)]
#print(values_mu)
labels = labels_m + labels_mu
types = [Extractor.NUMERIC] * len(labels)
values = values_m + values_mu
......@@ -80,13 +84,11 @@ class HuMoments(Extractor):
----------
image : opencv image
Image to be analyzed.
Returns
-------
features : tuple
Returns a tuple containing a list of labels, type and values for each feature extracted.
"""
"""image_binary = ImageUtils.image_binary(image, bgr = True)
m = measure.moments(image_binary)
......@@ -100,12 +102,11 @@ class HuMoments(Extractor):
hu = measure.moments_hu(nu)
values_hu = list(hu)"""
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
values_hu= cv2.HuMoments(cv2.moments(image)).flatten()
values_hu= np.nan_to_num(values_hu)
values_hu= np.nan_to_num(values_hu)
values_hu = list(values_hu)
labels_hu = [m+n for m,n in zip(['Hu_'] * len(values_hu),map(str,range(0,len(values_hu))))]
......
......@@ -17,7 +17,7 @@ from interface.interface import InterfaceException as IException
from PIL import Image
from pascal_voc_writer import Writer as wr
import shutil
from tkinter import *
#from tkinter import *
import segmentation
import extraction
from extraction import FeatureExtractor
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment