重磅干貨,第一時間送達(dá) 這兩種算法在它們可以檢測到的和不能檢測到的方面都有其起伏。 OpenCV 是用 C++ 在后端進(jìn)行編程的,并作為一個機(jī)器學(xué)習(xí)包,來分析 Python 中的圖像模式。 Skimage 也稱為 Scikit-Image ,是一個機(jī)器學(xué)習(xí)軟件包,用于圖像預(yù)處理以發(fā)現(xiàn)隱藏模式。 OpenCV 建議在基于服務(wù)器的 notebook 上完成,比如 google colab,或者 google cloud、Azure cloud 甚至 IBM 中的 notebook 擴(kuò)展。 而對于 Skimage 來說,即使是 Jupyter Lab/Notebooks 也能很好地工作,因?yàn)樗谔幚砩蠜]有 OpenCV 那么復(fù)雜。 from skimage import data from skimage.feature import Cascade
import matplotlib.pyplot as plt from matplotlib import patches
# Load the trained file from the module root. trained_file = data.lbp_frontal_face_cascade_filename()
# Initialize the detector cascade. detector = Cascade(trained_file)
img = data.astronaut()
detected = detector.detect_multi_scale(img=img, scale_factor=1.2, step_ratio=1, min_size=(60, 60), max_size=(90, 500))
plt.imshow(img) img_desc = plt.gca() plt.set_cmap('gray')
for patch in detected:
img_desc.add_patch( patches.Rectangle( (patch['c'], patch['r']), patch['width'], patch['height'], fill=False, color='r', linewidth=2 ) )
plt.show() # We have detected a face using Skimage in python # Obtain the segmentation with default 100 regions segments = slic(img)
# Obtain segmented image using label2rgb segmented_image = label2rgb(segments, img, kind=’avg’)
# Detect the faces with multi scale method detected = detector.detect_multi_scale(img=segmented_image, scale_factor=1.2, step_ratio=1, min_size=(10, 10), max_size=(1000, 1000))
# Show the detected faces show_detected_face(segmented_image, detected) 因此我們在這里看到了如何使用 python 中的 Skimage 檢測人臉和推斷圖像。from google.colab import drive drive.mount('/content/drive') image = cv2.imread(r'/content/drive/MyDrive/12-14-2020-tout.jpg') # check properties of the image image.shape # This image has 1333 pxl width, 2000 pxl height and 3 channels(red, green, blue) from google.colab.patches import cv2_imshow cv2_imshow(image) 這里我們使用OpenCV上傳了一張圖片: eye_detector = cv2.CascadeClassifier('/content/drive/MyDrive/haarcascade_frontalcatface.xml') eye_detections = eye_detector.detectMultiScale(image) eye_detections # detect face with eyes on one of the faces eye_detections = eye_detector.detectMultiScale(image) for (x,y,w,h) in eye_detections: cv2.rectangle(image, (x,y), (x+w, y+h), (0,300,0), 2) cv2_imshow(image) 在這里,我們使用 OpenCV 中的 Hascade 參數(shù)技術(shù)檢測了其中一張人臉,該技術(shù)也可以調(diào)整以檢測所有人臉。 |
|