Xử lý ảnh bằng pycharm
Ngày đăng:
13/01/2023
Trả lời:
0
Lượt xem:
182
Ý định ban đầu mình định viết một bài dài kể hươu kể nai về xử lý hình ảnh, nhưng rốt cuộc thấy có vẻ không hữu ích bằng ví dụ cụ thể bằng Python. Show Đây là ảnh gốc dùng làm ví dụ trong toàn bộ bài viết này Chuyển ảnh màu sang Grayscalefrom PIL import Image img = Image.open("rick-morty.png") # If you want a greyscale image, simply convert it to the L (Luminance) mode: new_img = img.convert('L') new_img.save('rick-morty-l.png') Chuyển ảnh màu sang Halftonefrom PIL import Image img = Image.open("rick-morty.png") # black and white image new_img = img.convert('1') new_img.save('rick-morty-1.png') Thay đổi độ tương phản (Contrast)from PIL import Image, ImageEnhance # PIL accesses images in Cartesian co-ordinates, so it is Image[columns, rows] img = Image.open("rick-morty.png") # Enhance constrast enhancer = ImageEnhance.Contrast(img) for i in range(1, 8): factor = i / 4.0 new_img = enhancer.enhance(factor) new_img.save('rick-morty-%s.png' % i) Thay đổi độ sáng (Brightness)from PIL import Image, ImageEnhance # PIL accesses images in Cartesian co-ordinates, so it is Image[columns, rows] img = Image.open("rick-morty.png") enhancer = ImageEnhance.Brightness(img) new_img = enhancer.enhance(1.8) # Darker # new_img = enhancer.enhance(0.8) new_img.save("rick-morty-brightness.png") Làm mờ (Gaussian blur)from PIL import Image, ImageFilter # PIL accesses images in Cartesian co-ordinates, so it is Image[columns, rows] img = Image.open("rick-morty.png") new_img = img.filter(ImageFilter.GaussianBlur(radius=20)) new_img.save("rick-morty-gaussian-blur.png") Làm tối 4 góc (Vignette)import cv2 import numpy as np img = cv2.imread('rick-morty.png') rows, cols = img.shape[:2] # generating vignette mask using Gaussian kernels kernel_x = cv2.getGaussianKernel(cols, 200) kernel_y = cv2.getGaussianKernel(rows, 200) kernel = kernel_y * kernel_x.T mask = 255 * kernel / np.linalg.norm(kernel) output = np.copy(img) # applying the mask to each channel in the input image for i in range(3): output[:, :, i] = output[:, :, i] * mask cv2.imwrite('rick-morty-vig.png', output) Tìm các cạnh bằng phương pháp Canny (Canny edge detection)import cv2 img = cv2.imread('rick-morty.png', 0) edges = cv2.Canny(img, 100, 200) cv2.imwrite('rick-morty-edges.png', edges) Vẽ countour của ảnhimport numpy as np import cv2 img = cv2.imread('rick-morty.png') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 120, 255, cv2.THRESH_BINARY) contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[-2] for contour in contours: cv2.drawContours(img, contour, -1, (0, 255, 0), 3) cv2.imwrite('rick-morty-contour.png', img)Nhận diện gương mặt Link down haarcascade_frontalface_default.xml, cái này là training data set dùng để nhận diện gương mặt bằng Haar Cascade classifier. |