图像处理和计算机视觉任务的Python工具库imutils 安装使用

imutils介绍
   imutils 是一个用于图像处理和计算机视觉任务的 Python 工具包。它提供了一系列方便实用的函数,可以简化常见的图像处理任务,imutils 库的始于 2015 年,作者是 Adrian Rosebrock。实际上,imutils是在OPenCV基础上的一个简单封装从而达到更为简结的调用OPenCV接口的目的,来轻松的实现图像的平移,旋转,缩放,骨架化等一系列的操作。本机安装该库后,可以使用help()函数查看更具体的介绍信息。

pip install imutils

图像平移

def translation():
    img = cv.imread("opencv/cat.jpg")
    img01 = imutils.translate(img,34,45)
    # cv.imshow("result",img)
    # cv.waitKey(0)
    # cv.destroyAllWindows()
    plt.figure()
    plt.subplot(1,2,1)
    plt.imshow(img01[:,:,::-1])
    plt.subplot(1,2,2)
    plt.imshow(img[:,:,::-1])
    plt.show()

图像缩放

def zoom_img():
    img = cv.imread("opencv/cat.jpg")
    img01 = imutils.resize(img,width=100)
    print(str(img.shape),img01.shape)
    plt.figure()
    plt.subplot(1,2,1)
    plt.imshow(img[:,:,::-1])
    plt.title(str(img.shape))
    plt.subplot(1,2,2)
    plt.imshow(img01[:,:,::-1])
    plt.title(img01.shape)
    plt.show()

图像旋转

def rotation():
    img = cv.imread("opencv/cat.jpg")
    rotated = imutils.rotate(img,90)
    rotated_round = imutils.rotate_bound(img,90)
    plt.figure()
    for i,img in enumerate([img,rotated,rotated_round]):
        plt.subplot(1,3,i+1)
        plt.imshow(img)
        plt.title(img.shape)
    plt.show()

骨架提取

⻣架提取,是指对图⽚中的物体进⾏拓扑⻣架 (topological skeleton) 构建的过程。 imutils 提供的⽅法是 skeletonize() ,第⼆个参数是结构参数的尺⼨ (structuring element) ,相当于是⼀个粒度,越⼩需要处理的时间越⻓。

def img_skeleton():
    img = cv.imread("opencv/img_2.png")
    # 灰度图
    img_gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    # 骨架提取
    skeleton = imutils.skeletonize(img_gray,size=(3,3))
    # 画板
    plt.figure()
    for i,img in enumerate([img,img_gray,skeleton]):
        plt.subplot(1,3,i+1)
        if i > 0 :
            plt.imshow(img,cmap="gray")
        else:
            plt.imshow(img[:,:,::-1])
        plt.title(img.shape)
    plt.show()

Matplotlib 显示 在 OpenCV 的 Python 绑定中,图像以 BGR 顺序表示为 NumPy 数组。如果打算使⽤ Matplotlib ,该 plt.imshow  函 数将假定图像按 RGB 顺序排列。调⽤ cv2.cvtColor  解决此问题,也可以使 ⽤  opencv2matplotlib  便捷功能。

def test():
    img = cv.imread("opencv/img_3.png")
    plt.figure()
    plt.subplot(1,2,1)
    plt.imshow(img)
    plt.subplot(1,2,2)
    plt.imshow(imutils.opencv2matplotlib(img))
    plt.show()

OPenCV 版本的检测

print("OPenCV版本: {}".format(cv2.__version__)) 
print("OPenCV是2.X? {}".format(imutils.is_cv2())) 
print("OPenCV是3.X? {}".format(imutils.is_cv3())) 
print("OPenCV是4.X? {}".format(imutils.is_cv4()))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值