Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Unified Diff: tools/telemetry/telemetry/internal/image_processing/image_util_numpy_impl.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/internal/image_processing/image_util_numpy_impl.py
diff --git a/tools/telemetry/telemetry/internal/image_processing/image_util_numpy_impl.py b/tools/telemetry/telemetry/internal/image_processing/image_util_numpy_impl.py
deleted file mode 100644
index d0da21d22a54df25cb5da4f8c7059bc869591915..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/image_processing/image_util_numpy_impl.py
+++ /dev/null
@@ -1,182 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from __future__ import division
-
-from telemetry.internal.util import external_modules
-from telemetry.util import color_histogram
-from telemetry.util import rgba_color
-import png
-
-cv2 = external_modules.ImportOptionalModule('cv2')
-np = external_modules.ImportRequiredModule('numpy')
-
-
-def Channels(image):
- return image.shape[2]
-
-def Width(image):
- return image.shape[1]
-
-def Height(image):
- return image.shape[0]
-
-def Pixels(image):
- return bytearray(np.uint8(image[:, :, ::-1]).flat) # Convert from bgr to rgb.
-
-def GetPixelColor(image, x, y):
- bgr = image[y][x]
- return rgba_color.RgbaColor(bgr[2], bgr[1], bgr[0])
-
-def WritePngFile(image, path):
- if cv2 is not None:
- cv2.imwrite(path, image)
- else:
- with open(path, "wb") as f:
- metadata = {}
- metadata['size'] = (Width(image), Height(image))
- metadata['alpha'] = False
- metadata['bitdepth'] = 8
- img = image[:, :, ::-1]
- pixels = img.reshape(-1).tolist()
- png.Writer(**metadata).write_array(f, pixels)
-
-def FromRGBPixels(width, height, pixels, bpp):
- img = np.array(pixels, order='F', dtype=np.uint8)
- img.resize((height, width, bpp))
- if bpp == 4:
- img = img[:, :, :3] # Drop alpha.
- return img[:, :, ::-1] # Convert from rgb to bgr.
-
-def FromPngFile(path):
- if cv2 is not None:
- img = cv2.imread(path, cv2.CV_LOAD_IMAGE_COLOR)
- if img is None:
- raise ValueError('Image at path {0} could not be read'.format(path))
- return img
- else:
- with open(path, "rb") as f:
- return FromPng(f.read())
-
-def FromPng(png_data):
- if cv2 is not None:
- file_bytes = np.asarray(bytearray(png_data), dtype=np.uint8)
- return cv2.imdecode(file_bytes, cv2.CV_LOAD_IMAGE_COLOR)
- else:
- width, height, pixels, meta = png.Reader(bytes=png_data).read_flat()
- return FromRGBPixels(width, height, pixels, 4 if meta['alpha'] else 3)
-
-def _SimpleDiff(image1, image2):
- if cv2 is not None:
- return cv2.absdiff(image1, image2)
- else:
- amax = np.maximum(image1, image2)
- amin = np.minimum(image1, image2)
- return amax - amin
-
-def AreEqual(image1, image2, tolerance, likely_equal):
- if image1.shape != image2.shape:
- return False
- self_image = image1
- other_image = image2
- if tolerance:
- if likely_equal:
- return np.amax(_SimpleDiff(image1, image2)) <= tolerance
- else:
- for row in xrange(Height(image1)):
- if np.amax(_SimpleDiff(image1[row], image2[row])) > tolerance:
- return False
- return True
- else:
- if likely_equal:
- return (self_image == other_image).all()
- else:
- for row in xrange(Height(image1)):
- if not (self_image[row] == other_image[row]).all():
- return False
- return True
-
-def Diff(image1, image2):
- self_image = image1
- other_image = image2
- if image1.shape[2] != image2.shape[2]:
- raise ValueError('Cannot diff images of differing bit depth')
- if image1.shape[:2] != image2.shape[:2]:
- width = max(Width(image1), Width(image2))
- height = max(Height(image1), Height(image2))
- self_image = np.zeros((width, height, image1.shape[2]), np.uint8)
- other_image = np.zeros((width, height, image1.shape[2]), np.uint8)
- self_image[0:Height(image1), 0:Width(image1)] = image1
- other_image[0:Height(image2), 0:Width(image2)] = image2
- return _SimpleDiff(self_image, other_image)
-
-def GetBoundingBox(image, color, tolerance):
- if cv2 is not None:
- color = np.array([color.b, color.g, color.r])
- img = cv2.inRange(image, np.subtract(color[0:3], tolerance),
- np.add(color[0:3], tolerance))
- count = cv2.countNonZero(img)
- if count == 0:
- return None, 0
- contours, _ = cv2.findContours(img, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
- contour = np.concatenate(contours)
- return cv2.boundingRect(contour), count
- else:
- if tolerance:
- color = np.array([color.b, color.g, color.r])
- colorm = color - tolerance
- colorp = color + tolerance
- b = image[:, :, 0]
- g = image[:, :, 1]
- r = image[:, :, 2]
- w = np.where(((b >= colorm[0]) & (b <= colorp[0]) &
- (g >= colorm[1]) & (g <= colorp[1]) &
- (r >= colorm[2]) & (r <= colorp[2])))
- else:
- w = np.where((image[:, :, 0] == color.b) &
- (image[:, :, 1] == color.g) &
- (image[:, :, 2] == color.r))
- if len(w[0]) == 0:
- return None, 0
- return (w[1][0], w[0][0], w[1][-1] - w[1][0] + 1, w[0][-1] - w[0][0] + 1), \
- len(w[0])
-
-def Crop(image, left, top, width, height):
- img_height, img_width = image.shape[:2]
- if (left < 0 or top < 0 or
- (left + width) > img_width or
- (top + height) > img_height):
- raise ValueError('Invalid dimensions')
- return image[top:top + height, left:left + width]
-
-def GetColorHistogram(image, ignore_color, tolerance):
- if cv2 is not None:
- mask = None
- if ignore_color is not None:
- color = np.array([ignore_color.b, ignore_color.g, ignore_color.r])
- mask = ~cv2.inRange(image, np.subtract(color, tolerance),
- np.add(color, tolerance))
-
- flatten = np.ndarray.flatten
- hist_b = flatten(cv2.calcHist([image], [0], mask, [256], [0, 256]))
- hist_g = flatten(cv2.calcHist([image], [1], mask, [256], [0, 256]))
- hist_r = flatten(cv2.calcHist([image], [2], mask, [256], [0, 256]))
- else:
- filtered = image.reshape(-1, 3)
- if ignore_color is not None:
- color = np.array([ignore_color.b, ignore_color.g, ignore_color.r])
- colorm = np.array(color) - tolerance
- colorp = np.array(color) + tolerance
- in_range = ((filtered[:, 0] < colorm[0]) | (filtered[:, 0] > colorp[0]) |
- (filtered[:, 1] < colorm[1]) | (filtered[:, 1] > colorp[1]) |
- (filtered[:, 2] < colorm[2]) | (filtered[:, 2] > colorp[2]))
- filtered = np.compress(in_range, filtered, axis=0)
- if len(filtered[:, 0]) == 0:
- return color_histogram.ColorHistogram(np.zeros((256)), np.zeros((256)),
- np.zeros((256)), ignore_color)
- hist_b = np.bincount(filtered[:, 0], minlength=256)
- hist_g = np.bincount(filtered[:, 1], minlength=256)
- hist_r = np.bincount(filtered[:, 2], minlength=256)
-
- return color_histogram.ColorHistogram(hist_r, hist_g, hist_b, ignore_color)

Powered by Google App Engine
This is Rietveld 408576698