龙空技术网

Python-OpenCV 一个小巧的二次封装库imutils

编程圈子 767

前言:

而今各位老铁们对“python imutils”大约比较注重,小伙伴们都需要学习一些“python imutils”的相关内容。那么小编同时在网摘上收集了一些关于“python imutils””的相关资讯,希望你们能喜欢,同学们快快来了解一下吧!

一、简介

在opencv基础上二次封装,包括 translation, rotation, resizing, skeletonization, and displaying Matplotlib images 等。

github地址:

二、使用

1. 安装

pip install imutils

查询opencv中的函数
可以使用关键词搜索opencv中的相应函数

import imutilsimutils.find_functions("area")#output:1. CC_STAT_AREA2. INTER_AREA3. contourArea4. minAreaRect

2. 图像平移Translation

图像在x轴方向左右平移,y轴方向上下平移,

#向右平移25像素,向上平移75像素translated = imutils.translate(image,25,-75)

3. 图像旋转Rotation

rotated = imutils.rotate(image,90)

4. 图像大小Resizing

改变图像大小,但保持原来图像的长宽比不变。
可以只单独设置width或者height;

resized = imutils.resize(image,width=300)resized = imutils.resize(image,height=300)


这个函数会根据图片的比例进行重新绘制大小,如果你的图片是200:200的图片比例,那么如果你使用resize函数的时候,resize(img,height=50,width=20) 那么最后修改的图像是已最小的那个数字对齐,也就是width=20,所以最后出来的图片大小是2020,而不是5020,或者50*50.

5. 骨架化Skeletonization

gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)skeleton = imutils.skeletonize(gray, size=(3, 3))cv2.imshow("Skeleton", skeleton)

6. 使用Matplotlib展示图片

opencv读取的图片格式为BGR,使用matplotlib显示的时候也是这个顺序,需要先将BGR转换为RGB才能正常显示,imutils提供了转换函数

plt.imshow(imutils.opencv2matplotlib(image))

7. URL转换为Image

image = imutils.url_to_image(url)

8. OpenCV版本

Example:print("Your OpenCV version: {}".format(cv2.__version__))print("Are you using OpenCV 2.X? {}".format(imutils.is_cv2()))print("Are you using OpenCV 3.X? {}".format(imutils.is_cv3()))输出:Your OpenCV version: 3.0.0Are you using OpenCV 2.X? FalseAre you using OpenCV 3.X? True

9. 自动边缘检测Automatic Canny Edge Detection

gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)edgeMap = imutils.auto_canny(gray)#源码def auto_canny(image, sigma=0.33): # compute the median of the single channel pixel intensities v = np.median(image) # apply automatic Canny edge detection using the computed median lower = int(max(0, (1.0 - sigma) * v)) upper = int(min(255, (1.0 + sigma) * v)) edged = cv2.Canny(image, lower, upper) # return the edged image return edged

10. 透视变换

# author: Adrian Rosebrock# website:  USAGE# BE SURE TO INSTALL 'imutils' PRIOR TO EXECUTING THIS COMMAND# python perspective_transform.py# import the necessary packagesfrom imutils import perspectiveimport numpy as npimport cv2# load the notecard code image, clone it, and initialize the 4 points# that correspond to the 4 corners of the notecardnotecard = cv2.imread("../demo_images/notecard.png")clone = notecard.copy()pts = np.array([(73, 239), (356, 117), (475, 265), (187, 443)])# loop over the points and draw them on the cloned imagefor (x, y) in pts: cv2.circle(clone, (x, y), 5, (0, 255, 0), -1)# apply the four point tranform to obtain a "birds eye view" of# the notecardwarped = perspective.four_point_transform(notecard, pts)# show the original and warped imagescv2.imshow("Original", clone)cv2.imshow("Warped", warped)cv2.waitKey(0)

11. 给cv2.findContours结果排序

# author: Adrian Rosebrock# website:  USAGE# BE SURE TO INSTALL 'imutils' PRIOR TO EXECUTING THIS COMMAND# python sorting_contours.py# import the necessary packagesfrom imutils import contoursimport imutilsimport cv2# load the shapes image clone it, convert it to grayscale, and# detect edges in the imageimage = cv2.imread("../demo_images/shapes.png")orig = image.copy()gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)edged = imutils.auto_canny(gray)# find contours in the edge mapcnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)# loop over the (unsorted) contours and label themfor (i, c) in enumerate(cnts): orig = contours.label_contour(orig, c, i, color=(240, 0, 159))# show the original imagecv2.imshow("Original", orig)# loop over the sorting methodsfor method in ("left-to-right", "right-to-left", "top-to-bottom", "bottom-to-top"): # sort the contours (cnts, boundingBoxes) = contours.sort_contours(cnts, method=method) clone = image.copy() # loop over the sorted contours and label them for (i, c) in enumerate(cnts): sortedImage = contours.label_contour(clone, c, i, color=(240, 0, 159)) # show the sorted contour image cv2.imshow(method, sortedImage)# wait for a keypresscv2.waitKey(0)

10. 返回图片列表

from imutils import pathsfor imagePath in paths.list_images("../demo_images"): print imagePath

标签: #python imutils