Exemple #1
0
 def test_transplant2(self):
     """To use on server.
     Passes binary data to input,
     and passes io.BytesIO instance to output
     """
     o = io.BytesIO()
     pyxif.transplant(I1, I2, o)
     self.assertEqual(pyxif.load(I1), pyxif.load(o.getvalue()))
     try:
         i = Image.open(o)
         i._getexif()
     except:
         self.fail("'transplant' generated wrong file")
     finally:
         i.close()
Exemple #2
0
 def test_transplant2(self):
     """To use on server.
     Passes binary data to input,
     and passes io.BytesIO instance to output
     """
     o = io.BytesIO()
     pyxif.transplant(I1, I2, o)
     self.assertEqual(pyxif.load(I1), pyxif.load(o.getvalue()))
     try:
         i = Image.open(o)
         i._getexif()
     except:
         self.fail("'transplant' generated wrong file")
     finally:
         i.close()
Exemple #3
0
def process_clahe(in_path,
                  tileGridSize,
                  grey=False,
                  out_path="",
                  clip_limit=2):
    """
    Appy CLAHE (contrast limited adaptive histogram equalization) method on an image
    for more information about CLAHE, see https://docs.opencv.org/3.1.0/d5/daf/tutorial_py_histogram_equalization.html

    Overwriting image will raise an error, as the initial image is needed to copy-past metadata
    :param in_path: input image
    :param tileGridSize: size of the "blocks" to apply local histogram equalization
    :param grey: if True, the image will be converted to grayscale
    :param out_path: output path, the folders must exists and the image extension must be valid
            by default, output will be saved as input_path/input_name_clahe.JPG
    :param clip_limit: contrast limit, used to avoid too much noise
    """
    if out_path == "":
        out_path = ".".join(in_path.split(".")[:-1]) + "_clahe.JPG"

    # read input
    print("Processing CLAHE method on " + in_path.split("/")[-1])
    img = cv.imread(in_path)

    # convert color to gray
    if grey: img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

    # apply a median filter before clahe
    img = cv.medianBlur(img, 3)

    # create clahe object
    clahe = cv.createCLAHE(clipLimit=clip_limit,
                           tileGridSize=(tileGridSize, tileGridSize))  # CLAHE

    # apply CLAHE for each image channel, and then recreate the full image (only useful if gray==False)
    channels_ini = cv.split(img)
    channels_final = []
    for channel in channels_ini:
        # Apply CLAHE
        channels_final.append(clahe.apply(channel))
    img_final = cv.merge(channels_final)

    # save image and write metadata from initial file
    cv.imwrite(out_path, img_final)
    pyxif.transplant(in_path, out_path)
Exemple #4
0
    def test_transplant(self):
        pyxif.transplant(INPUT_FILE1, INPUT_FILE2, "transplant.jpg")
        exif_src = pyxif.load(INPUT_FILE1)
        img_src = pyxif.load(INPUT_FILE2)
        generated = pyxif.load("transplant.jpg")

        self.assertEqual(exif_src, generated)
        self.assertNotEqual(img_src, generated)
        try:
            i = Image.open("transplant.jpg")
            i._getexif()
        except:
            self.fail("'transplant' generated wrong file")
        finally:
            i.close()

        with self.assertRaises(ValueError):
            pyxif.transplant(NOEXIF_FILE, INPUT_FILE2, "foo.jpg")
Exemple #5
0
    def test_transplant(self):
        pyxif.transplant(INPUT_FILE1, INPUT_FILE2, "transplant.jpg")
        exif_src = pyxif.load(INPUT_FILE1)
        img_src = pyxif.load(INPUT_FILE2)
        generated = pyxif.load("transplant.jpg")

        self.assertEqual(exif_src, generated)
        self.assertNotEqual(img_src, generated)
        try:
            i = Image.open("transplant.jpg")
            i._getexif()
        except:
            self.fail("'transplant' generated wrong file")
        finally:
            i.close()

        with  self.assertRaises(ValueError):
            pyxif.transplant(NOEXIF_FILE, INPUT_FILE2, "foo.jpg")
Exemple #6
0
def transplant_sample():
    pyxif.transplant(os.path.join("samples", "01.jpg"),
                     os.path.join("samples", "02.jpg"),
                     "transplant_sample.jpg")