iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中opencv通过4坐标剪裁图片的示例分析
  • 872
分享到

python中opencv通过4坐标剪裁图片的示例分析

2023-06-15 09:06:19 872人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍python中OpenCV通过4坐标剪裁图片的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文主要介绍了Python opencv通过4坐标剪裁图片,分享给大家,具体如下:效果展示, 裁剪出

这篇文章主要介绍pythonOpenCV通过4坐标剪裁图片的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

本文主要介绍了Python opencv通过4坐标剪裁图片,分享给大家,具体如下:

效果展示,

python中opencv通过4坐标剪裁图片的示例分析

裁剪出的单词图像(如下)

python中opencv通过4坐标剪裁图片的示例分析
python中opencv通过4坐标剪裁图片的示例分析
python中opencv通过4坐标剪裁图片的示例分析
python中opencv通过4坐标剪裁图片的示例分析
python中opencv通过4坐标剪裁图片的示例分析
python中opencv通过4坐标剪裁图片的示例分析
python中opencv通过4坐标剪裁图片的示例分析

这里程序我是用在paddleOCR里面,通过识别模型将识别出的图根据程序提供的坐标(即四个顶点的值)进行抠图的程序(上面的our和and就是扣的图),并进行了封装,相同格式的在这个基础上改就是了

[[[368.0, 380.0], [437.0, 380.0], [437.0, 395.0], [368.0, 395.0]], [[496.0, 376.0], [539.0, 378.0], [538.0, 397.0], [495.0, 395.0]], [[466.0, 379.0], [498.0, 379.0], [498.0, 395.0], [466.0, 395.0]], [[438.0, 379
.0], [466.0, 379.0], [466.0, 395.0], [438.0, 395.0]], ]

从程序得到的数据格式大概长上面的样子,由多个四个坐标一组的数据(如下)组成,即下面的[368.0, 380.0]为要裁剪图片左上角坐标,[437.0, 380.0]为要裁剪图片右上角坐标,[437.0, 395.0]为要裁剪图片右下角坐标,[368.0, 395.0]为要裁剪图片左下角坐标.

[[368.0, 380.0], [437.0, 380.0], [437.0, 395.0], [368.0, 395.0]]

而这里剪裁图片使用的是opencv(由于参数的原因没有设置角度的话就只能裁剪出平行的矩形,如果需要裁减出不与矩形图片编译平行的图片的话,参考这个博客进行进一步的改进点击进入)

裁剪部分主要是根据下面这一行代码进行的,这里要记住(我被这里坑了一下午),
参数 tr[1]:左上角或右上角的纵坐标值
参数bl[1]:左下角或右下角的纵坐标值
参数tl[0]:左上角或左下角的横坐标值
参数br[0]:右上角或右下角的横坐标值

 crop = img[int(tr[1]):int(bl[1]), int(tl[0]):int(br[0]) ]

python中opencv通过4坐标剪裁图片的示例分析

总的程序代码如下

import numpy as npimport cv2def np_list_int(tb):    tb_2 = tb.tolist() #将np转换为列表    return tb_2def shot(img, dt_boxes):#应用于predict_det.py中,通过dt_boxes中获得的四个坐标点,裁剪出图像    dt_boxes = np_list_int(dt_boxes)    boxes_len = len(dt_boxes)    num = 0    while 1:        if (num < boxes_len):            box = dt_boxes[num]            tl = box[0]            tr = box[1]            br = box[2]            bl = box[3]            print("打印转换成功数据num =" + str(num))            print("tl:" + str(tl), "tr:" + str(tr), "br:" + str(br), "bl:" + str(bl))            print(tr[1],bl[1], tl[0],br[0])            crop = img[int(tr[1]):int(bl[1]), int(tl[0]):int(br[0]) ]                        # crop = img[27:45, 67:119] #测试            # crop = img[380:395, 368:119]            cv2.imwrite("K:/paddleOCR/PaddleOCR/screenshot/a/" + str(num) + ".jpg", crop)            num = num + 1        else:            breakdef shot1(img_path,tl, tr, br, bl,i):    tl = np_list_int(tl)    tr = np_list_int(tr)    br = np_list_int(br)    bl = np_list_int(bl)    print("打印转换成功数据")    print("tl:"+str(tl),"tr:" + str(tr), "br:" + str(br), "bl:"+ str(bl))    img = cv2.imread(img_path)    crop = img[tr[1]:bl[1], tl[0]:br[0]]    # crop = img[27:45, 67:119]    cv2.imwrite("K:/paddleOCR/PaddleOCR/screenshot/shot/" + str(i) + ".jpg", crop)# tl1 = np.array([67,27])# tl2= np.array([119,27])# tl3 = np.array([119,45])# tl4 = np.array([67,45])# shot("K:\paddleOCR\PaddleOCR\screenshot\zong.jpg",tl1, tl2 ,tl3 , tl4 , 0)

特别注意对np类型转换成列表,以及crop = img[tr[1]:bl[1], tl[0]:br[0]]的中参数的位置,

实例

用了两种方法保存图片,opencv和Image,实践证明opencv非常快

from PIL import Imageimport osimport cv2import timeimport matplotlib.pyplot as pltdef label2picture(cropImg,framenum,tracker):    pathnew ="E:\\img2\\"    # cv2.imshow("image", cropImg)    # cv2.waiTKEy(1)    if (os.path.exists(pathnew + tracker)):        cv2.imwrite(pathnew + tracker+'\\'+framenum + '.jpg', cropImg,[int(cv2.IMWRITE_JPEG_QUALITY), 100])     else:        os.makedirs(pathnew + tracker)        cv2.imwrite(pathnew + tracker+'\\'+framenum + '.jpg', cropImg,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) f = open("E:\\hypotheses.txt","r")lines = f.readlines()for line in lines:    li  = line.split(',')    print(li[0],li[1],li[2],li[3],li[4],li[5])    filename = li[0]+'.jpg'    img = cv2.imread("E:\\DeeCamp\\img1\\" + filename)    crop_img = img[int(li[3][:-3]):(int(li[3][:-3]) + int(li[5][:-3])),               int(li[2][:-3]):(int(li[2][:-3]) + int(li[4][:-3]))]    # print(int(li[2][:-3]),int(li[3][:-3]),int(li[4][:-3]),int(li[5][:-3]))    label2picture(crop_img, li[0], li[1])# ## x,y,w,h = 87,158,109,222# img = cv2.imread("E:\\DeeCamp\\img1\\1606.jpg")# # print(img.shape)# crop = img[y:(h+y),x:(w+x)]# cv2.imshow("image", crop)# cv2.waitKey(0)# img = Image.open("E:\\DeeCamp\\img1\\3217.jpg")## cropImg = img.crop((x,y,x+w,y+h))# cropImg.show()    # img = Image.open("E:\\deep_sort-master\\MOT16\\train\\try1\\img1\\"+filename)    # print(int(li[2][:-3]),(int(li[2][:-3])+int(li[4][:-3])), int(li[3][:-3]),(int(li[3][:-3])+int(li[5][:-3])))     # #裁切图片    # # cropImg = img.crop(region)    # # cropImg.show()    # framenum ,tracker= li[0],li[1]    # pathnew = 'E:\\DeeCamp\\deecamp项目\\deep_sort-master\\crop_picture\\'    # if (os.path.exists(pathnew + tracker)):    #     # 保存裁切后的图片    #     plt.imshow(cropImg)    #     plt.savefig(pathnew + tracker+'\\'+framenum + '.jpg')    # else:    #     os.makedirs(pathnew + tracker)    #     plt.imshow(cropImg)    #     plt.savefig(pathnew + tracker+'\\'+framenum + '.jpg')

以上是“python中opencv通过4坐标剪裁图片的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网Python频道!

--结束END--

本文标题: python中opencv通过4坐标剪裁图片的示例分析

本文链接: https://www.lsjlt.com/news/279220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中opencv通过4坐标剪裁图片的示例分析
    这篇文章主要介绍python中opencv通过4坐标剪裁图片的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文主要介绍了python opencv通过4坐标剪裁图片,分享给大家,具体如下:效果展示, 裁剪出...
    99+
    2023-06-15
  • python opencv通过4坐标剪裁图片
    本文主要介绍了python opencv通过4坐标剪裁图片,分享给大家,具体如下: 效果展示, 裁剪出的单词图像(如下) 这里程序我是用在paddleOCR里...
    99+
    2024-04-02
  • Python图片处理之图片裁剪的示例分析
    小编给大家分享一下Python图片处理之图片裁剪的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、操作流程首先会吧?有张照片这是网上随便找的一张照片,自行保存测试看看照片运行代码,其中show_img函数是展示照...
    99+
    2023-06-15
  • 三分钟教会你用Python+OpenCV批量裁剪xml格式标注的图片
    目录前言xml文件格式代码思想完整代码效果展示总结前言 在目标检测中,数据集常常使用labelimg标注,会生成xml文件。本文旨在根据xml标注文件来裁剪目标,以达到去除背景信息的...
    99+
    2024-04-02
  • element-ui上传图片后标注坐标点的示例分析
    这篇文章给大家分享的是有关element-ui上传图片后标注坐标点的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是element-ui    element-ui是由饿...
    99+
    2023-06-20
  • Python OpenCV图像识别的示例分析
    小编给大家分享一下Python OpenCV图像识别的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、人脸识别主要有以下两种实现方法:哈尔(Haar)级联法:专门解决人脸识别而推出的传统算法;实现步骤:...
    99+
    2023-06-29
  • 通过Java 程序获取Word中指定图片的坐标位置
    之前给大家介绍过Java解析word,获取文档中图片位置的方法,感兴趣的朋友点击查看下,今天给大家介绍如何通过Java 程序获取Word中指定图片的坐标位置,感兴趣的朋友一起看看吧!...
    99+
    2024-04-02
  • Python中opencv操作的示例分析
    这篇文章主要介绍Python中opencv操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!直接读取图片def display_img(file="p.jpeg"): ...
    99+
    2023-06-14
  • 微信小程序把百度地图坐标转换成腾讯地图坐标的示例分析
    这篇文章给大家分享的是有关微信小程序把百度地图坐标转换成腾讯地图坐标的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。申请步骤填写信息wxml代码<map ...
    99+
    2024-04-02
  • Python中图片采样处理的示例分析
    这篇文章给大家分享的是有关Python中图片采样处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一.图像采样处理原理图像采样(Image Sampling)处理是将一幅连续图像在空间上分割成M&...
    99+
    2023-06-29
  • JavaScript中图片库的示例分析
    这篇文章将为大家详细讲解有关JavaScript中图片库的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、一个javascript 图片库实例,下面是效果图点击...
    99+
    2024-04-02
  • WebSocket中通信过程的示例分析
    小编给大家分享一下WebSocket中通信过程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是 WebSocket...
    99+
    2024-04-02
  • Bootstrap中图片轮播的示例分析
    小编给大家分享一下Bootstrap中图片轮播的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Bootstrap是什么Bootstrap是目前最受欢迎的前端框架,它是基于 HTML、CSS、JAVASCRIPT 的...
    99+
    2023-06-14
  • vue中图片引入的示例分析
    这篇文章给大家分享的是有关vue中图片引入的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。图片引入无非是路径问题,路径就会有绝对路径,和相对路径这两个说法。有一种引入方式就是直接引入绝对路径<img...
    99+
    2023-06-02
  • python中的opencv图像梯度实例分析
    本文小编为大家详细介绍“python中的opencv图像梯度实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“python中的opencv图像梯度实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。图像梯...
    99+
    2023-06-30
  • Python中opencv医学处理的示例分析
    这篇文章给大家分享的是有关Python中opencv医学处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能...
    99+
    2023-06-15
  • App中应用图标标记的示例分析
    这篇文章将为大家详细讲解有关App中应用图标标记的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、概念应用图标标记,称为Badge App Icon。Badge,徽章,具象来说,就...
    99+
    2023-06-19
  • python opencv图像处理基本操作的示例分析
    本篇文章给大家分享的是有关python opencv图像处理基本操作的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。①读取图像②显示图像该函数中,name是显示窗口的名...
    99+
    2023-06-25
  • Python+OpenCV图像处理之直方图统计的示例分析
    这篇文章主要为大家展示了“Python+OpenCV图像处理之直方图统计的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python+OpenCV图像处理之直方图统计的示例分析”这篇文章...
    99+
    2023-06-22
  • CSS中图片Base64编码的示例分析
    这篇文章主要介绍了CSS中图片Base64编码的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是 base64 编码  我不是来讲概念的,直接切入正题,图片的 b...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作