【CV】图像分析用 OpenCV 与 Skimage,哪一个更好?

这两种算法在它们可以检测到的和不能检测到的方面都有其起伏。

OpenCV 是用 C++ 在后端进行编程的,并作为一个机器学习包,来分析 Python 中的图像模式。

Skimage 也称为 Scikit-Image ,是一个机器学习软件包,用于图像预处理以发现隐藏模式。


两者的最佳平台

OpenCV 建议在基于服务器的 notebook 上完成,比如 google colab,或者 google cloud、Azure cloud 甚至 IBM 中的 notebook 扩展。

而对于 Skimage 来说,即使是 Jupyter Lab/Notebooks 也能很好地工作,因为它在处理上没有 OpenCV 那么复杂。

使用 Skimage 分析面部数据的 Python 代码

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()

6efc7b858d0683a91da7931219337209.png

# 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)

c8eebc83f627030787da05bf17100cd2.png

因此我们在这里看到了如何使用 python 中的 Skimage 检测人脸和推断图像。

使用 OpenCV 分析数据的 Python 代码

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上传了一张图片:

70b08f3590865a4676abf205406ad5fd.png

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)

54b7e7b91f372b8b060571323d64a4ba.png

在这里,我们使用 OpenCV 中的 Hascade 参数技术检测了其中一张人脸,该技术也可以调整以检测所有人脸。

 
 
 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群955171419,加入微信群请扫码:

753bac2088098caca6f7d1e62dc68f79.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值