Example #1
0
 def CreateMasks(self):
     cv2.destroyWindow(self.winname)
     cv2.namedWindow(self.winname)
     cv2.setMouseCallback(self.winname, self.draw_circle)
     list = mocl.getCsvList(self.image_path, False)
     while (True):
         self.circle_mask_on_random_image_in_path(
             morn.random_path(self.image_path),
             target_size=self.targetSize,
             check_csv=True,
             list=list)
Example #2
0
def splitCsv(maskDataPath, name, csv1, csv2, howManyToNewCsv):
    list = mocl.getCsvList(maskDataPath, False, name=name)
    i = 0
    for row in list:
        if len(list) - i > howManyToNewCsv:
            if csv1 is not None:
                mocl.writeToCsv(csv1, mocl.getMaskHeader(), row)
        else:
            if csv2 is not None:
                mocl.writeToCsv(csv2, mocl.getMaskHeader(), row)
        i += 1
Example #3
0
 def createAllMasksForImagesCsv(self, repo_path):
     success = 0
     fail = 0
     list = mocl.getCsvList(repo_path, image=False)
     iter = 0
     with open(repo_path + "imageData.csv", 'r') as file:
         reader = csv.reader(file)
         next(reader, None)
         for row in reader:
             if self.createMaskFromCsv(repo_path, row, list, True):
                 success += 1
             else:
                 fail += 1
             iter += 1
             print("Images looped: " + str(iter))
         file.close()
     print("Masks created: " + str(success) + ", failed to create: " +
           str(fail))
Example #4
0
    def createImagesInRepoAfterFunctionOnPath(self,
                                              path,
                                              new_repo_path,
                                              function,
                                              target_size,
                                              override=False,
                                              extension='.jpg',
                                              onlyMasked=False):
        success = 0
        fail = 0
        repo_path, image_path = morn.getRepoPathAndImagePath(path)

        base2, name2 = BuildRepo.getBaseRepoPathAndRepoName(new_repo_path)
        BuildRepo.createImagesRepo(base2 + '/', name2)
        new_path = new_repo_path + image_path

        maskList = None
        if onlyMasked:
            maskList = mocl.getCsvList(repo_path, False)

        for a in os.listdir(path):
            if not os.path.isfile(os.path.join(path, a)):
                continue
            patient, date, eye = morn.getPatientDateEye(image_path)

            if onlyMasked and not os.path.isfile(
                    os.path.join(path + 'mask/', a)
            ) and not mocl.checkIfExistsInCSV(
                [patient, date, eye, a], list=maskList, image=False):
                continue
            name = a.split(".")[0]
            base_image = moil.read_and_size(name,
                                            path=path,
                                            target_size=target_size)
            image = function(base_image)

            if morn.createImageInPath(new_path, name + extension, image,
                                      override):
                mocl.registerImageCsv(new_repo_path, image_path,
                                      name + extension, image, function)
                success += 1
            else:
                fail += 1
        return success, fail
Example #5
0
    def createMaskFromCsv(self,
                          repo_path,
                          imageRow,
                          list=None,
                          override=False):
        if list is None:
            list = mocl.getCsvList(repo_path, image=False)

        target = mocl.checkIfExistsInCSV(imageRow,
                                         repo_path=repo_path,
                                         list=list,
                                         image=False,
                                         returnTargetRow=True)
        if target is None:
            return False

        imageW = int(imageRow[4])
        imageH = int(imageRow[5])

        maskW = int(target[4])
        maskH = int(target[5])
        maskX = int(target[6])
        maskY = int(target[7])
        maskR = int(target[8])

        Wratio = imageW / maskW
        Hratio = imageH / maskH

        Rratio = math.sqrt((((Wratio**2) + (Hratio**2)) / 2))

        outX = int(maskX * (Wratio))
        outY = int(maskY * (Hratio))
        outR = int(maskR * (Rratio))
        mask = np.zeros((imageH, imageW), dtype=np.uint8)
        mask = cv2.circle(mask, (outX, outY), outR, 255, -1)

        path = repo_path + reduce(
            (lambda x, y: x + '/' + y), imageRow[:3]) + '/mask/'

        return morn.createImageInPath(path, imageRow[3], mask, override)