Source code xử lý ảnh python
Để có thể code những bài tập xử lý ảnh thì các bạn cần phải cài đặt : Python ( bản mới nhất ), thư viện xử lý ảnh OpenCV, numpy, matplotlib và IDE soạn thảo code : VS C >2016, Pycharm, Sublime Text, NotePad++,… Show Bài 1 : Bài tập xử lý ảnh: đọc ảnh mầu I04.jpg vào biến ma trận I.
Bài 2: Sử dụng ngôn ngữ lập trình tùy chọn Python/Matlab/ C++/Java, thư viện thị giác máy tính OpenCV, viết chương trình thực hiện yêu cầu sau:
Bài 3: Bài tập xử lý ảnh đọc ảnh mầu coins.jpg vào biến ma trận I.
Cảm ơn các bạn đã ghé thăm. Chúc các bạn thành công! Ý đị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. Đâ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ặtLink 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. import cv2 img = cv2.imread('queen.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') faces = faceCascade.detectMultiScale( gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE ) for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) cv2.imwrite('queen-fd.jpg', img) |