Case Studies
- Introduction
- Face Detection
- Webcam Face Detection
- Object Tracking in Video
- Eye Tracking
- Handwriting Recognition with HOG
- Plant Classification
- Building an Amazon.com Cover Search
- Conclusions
Load Display Save
import argparseimport cv2ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required = True, help = "Path to the image")args = vars(ap.parse_args())#loadimage = cv2.imread(args["image"])w, h, c = image.shape#displaycv2.imshow("Image", image)cv2.waitKey(0)#savecv2.imwrite("newimage.jpg", image)
Drawing
import numpy as npimport cv2canvas = np.zeros((300, 300, 3), dtype = "uint8")#linegreen = (0, 255, 0)cv2.line(canvas, (0, 0), (300, 300), green)cv2.imshow("Canvas", canvas)cv2.waitKey(0)red = (0, 0, 255)cv2.line(canvas, (300, 0), (0, 300), red, 3)cv2.imshow("Canvas", canvas)cv2.waitKey(0)#rectanglecv2.rectangle(canvas, (10, 10), (60, 60), green)cv2.imshow("Canvas", canvascv2.waitKey(0)cv2.rectangle(canvas, (50, 200), (200, 225), red, 5)cv2.imshow("Canvas", canvas)cv2.waitKey(0)blue = (255, 0, 0)cv2.rectangle(canvas, (200, 50), (225, 125), blue, -1)cv2.imshow("Canvas", canvas)cv2.waitKey(0)#circle canvas = np.zeros((300, 300, 3), dtype = "uint8")(centerX, centerY) = (canvas.shape[1] // 2, canvas.shape[0] // 2)white = (255, 255, 255)for r in range(0, 175, 25): cv2.circle(canvas, (centerX, centerY), r, white)cv2.imshow("Canvas", canvas)cv2.waitKey(0)#abstract drawingfor i in range(0, 25): radius = np.random.randint(5, high = 200) color = np.random.randint(0, high = 256, size = (3,)).tolist() pt = np.random.randint(0, high = 300, size = (2,)) cv2.circle(canvas, tuple(pt), radius, color, -1) cv2.imshow("Canvas", canvas)cv2.waitKey(0)
Image Processing
translation
import numpy as npimport argparseimport imutilsimport cv2ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required = True, help = "Path to the image")args = vars(ap.parse_args())image = cv2.imread(args["image"])cv2.imshow("Original", image)M = np.float32([[1, 0, 25], [0, 1, 50]])shifted = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))cv2.imshow("Shifted Down and Right", shifted)M = np.float32([[1, 0, -50], [0, 1, -90]])shifted = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))cv2.imshow("Shifted Up and Left", shifted)
rotation
import numpy as npimport argparseimport imutilsimport cv2ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", default='33.jpg', help = "Path to the image")args = vars(ap.parse_args())image = cv2.imread(args["image"])cv2.imshow("Original", image)(h, w) = image.shape[:2]center=(w//2,h//2)M = cv2.getRotationMatrix2D(center, 45, 1.0)rotated = cv2.warpAffine(image, M, (w, h))cv2.imshow("Rotated by 45 Degrees", rotated)M = cv2.getRotationMatrix2D(center, -90, 1.0)rotated = cv2.warpAffine(image, M, (w, h))cv2.imshow("Rotated by -90 Degrees", rotated)cv2.waitKey()
resizing
import numpy as npimport argparseimport imutilsimport cv2ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", default='33.jpg', help = "Path to the image")args = vars(ap.parse_args())image = cv2.imread(args["image"])cv2.imshow("Original", image)r = 150.0 / image.shape[1]dim = (150, int(image.shape[0] * r))resized = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)cv2.imshow("Resized (Width)", resized)r = 50.0 / image.shape[0]dim = (int(image.shape[1] * r), 50)resized = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)cv2.imshow("Resized (Height)", resized)cv2.waitKey(0)
flipping
import argparseimport cv2ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", default='33.jpg', help = "Path to the image")args = vars(ap.parse_args())image = cv2.imread(args["image"])cv2.imshow("Original", image)flipped = cv2.flip(image, 1)cv2.imshow("Flipped Horizontally", flipped)flipped = cv2.flip(image, 0)cv2.imshow("Flipped Vertically", flipped)flipped = cv2.flip(image, -1)cv2.imshow("Flipped Horizontally & Vertically", flipped)cv2.waitKey(0)
Histograms
Smoothing and Blurring
Thresholding
Gradients and Edge Detection
Contours