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

共 3300字,需浏览 7分钟

 ·

2021-12-14 21:01

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

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


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 datafrom skimage.feature import Cascade
import matplotlib.pyplot as pltfrom 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 regionssegments = slic(img)
# Obtain segmented image using label2rgbsegmented_image = label2rgb(segments, img, kind=’avg’)
# Detect the faces with multi scale methoddetected = 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 facesshow_detected_face(segmented_image, detected)

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


使用 OpenCV 分析数据的 Python 代码


from google.colab import drivedrive.mount('/content/drive')image = cv2.imread(r'/content/drive/MyDrive/12-14-2020-tout.jpg')# check properties of the imageimage.shape# This image has 1333 pxl width, 2000 pxl height and 3 channels(red, green, blue)from google.colab.patches import cv2_imshowcv2_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 faceseye_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 参数技术检测了其中一张人脸,该技术也可以调整以检测所有人脸。


下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报