前言:
而今各位老铁们对“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