From 76ee482e18ef8b6a319a5203c45e4db8bc5bb0c5 Mon Sep 17 00:00:00 2001 From: minqiyang Date: Fri, 10 Aug 2018 17:00:21 +0800 Subject: [PATCH] Fix cv2 issues --- python/paddle/dataset/image.py | 19 +++++++++++++++---- .../paddle/fluid/tests/unittests/op_test.py | 5 +++++ python/paddle/reader/decorator.py | 5 +++-- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/python/paddle/dataset/image.py b/python/paddle/dataset/image.py index f7e7c854fe4..99d2c5f8993 100644 --- a/python/paddle/dataset/image.py +++ b/python/paddle/dataset/image.py @@ -33,6 +33,11 @@ import numpy as np try: import cv2 except ImportError: + import sys + sys.stderr.write( + '''Warning with paddle image module: opencv-python should be imported, + or paddle image module could NOT work; please install opencv-python first.''' + ) cv2 = None import os import tarfile @@ -126,6 +131,8 @@ def load_image_bytes(bytes, is_color=True): load and return a gray image. :type is_color: bool """ + assert cv2 is not None + flag = 1 if is_color else 0 file_bytes = np.asarray(bytearray(bytes), dtype=np.uint8) img = cv2.imdecode(file_bytes, flag) @@ -149,6 +156,8 @@ def load_image(file, is_color=True): load and return a gray image. :type is_color: bool """ + assert cv2 is not None + # cv2.IMAGE_COLOR for OpenCV3 # cv2.CV_LOAD_IMAGE_COLOR for older OpenCV Version # cv2.IMAGE_GRAYSCALE for OpenCV3 @@ -176,12 +185,14 @@ def resize_short(im, size): :param size: the shorter edge size of image after resizing. :type size: int """ + assert cv2 is not None + h, w = im.shape[:2] h_new, w_new = size, size if h > w: - h_new = size * h / w + h_new = size * h // w else: - w_new = size * w / h + w_new = size * w // h im = cv2.resize(im, (h_new, w_new), interpolation=cv2.INTER_CUBIC) return im @@ -228,8 +239,8 @@ def center_crop(im, size, is_color=True): :type is_color: bool """ h, w = im.shape[:2] - h_start = (h - size) / 2 - w_start = (w - size) / 2 + h_start = (h - size) // 2 + w_start = (w - size) // 2 h_end, w_end = h_start + size, w_start + size if is_color: im = im[h_start:h_end, w_start:w_end, :] diff --git a/python/paddle/fluid/tests/unittests/op_test.py b/python/paddle/fluid/tests/unittests/op_test.py index 1ed14e35b1b..ada4ad70f0c 100644 --- a/python/paddle/fluid/tests/unittests/op_test.py +++ b/python/paddle/fluid/tests/unittests/op_test.py @@ -362,9 +362,14 @@ class OpTest(unittest.TestCase): def check_output_customized(self, checker): places = self._get_places() + import sys + print('places', places) for place in places: outs = self.calc_output(place) outs = [np.array(out) for out in outs] + import sys + print('outs', outs) + sys.stdout.flush() checker(outs) def __assert_is_close(self, numeric_grads, analytic_grads, names, diff --git a/python/paddle/reader/decorator.py b/python/paddle/reader/decorator.py index ce410e61b92..d53694959b6 100644 --- a/python/paddle/reader/decorator.py +++ b/python/paddle/reader/decorator.py @@ -27,6 +27,7 @@ from six.moves import zip import itertools import random import zlib +import paddle.fluid.compat as cpt def map_readers(func, *readers): @@ -390,9 +391,9 @@ class PipeReader: buff = self.process.stdout.read(self.bufsize) if buff: if self.file_type == "gzip": - decomp_buff = self.dec.decompress(buff) + decomp_buff = cpt.to_literal_str(self.dec.decompress(buff)) elif self.file_type == "plain": - decomp_buff = buff + decomp_buff = cpt.to_literal_str(buff) else: raise TypeError("file_type %s is not allowed" % self.file_type) -- GitLab