最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python opencv通過4坐標(biāo)剪裁圖片

 更新時(shí)間:2021年06月04日 11:11:48   作者:程序員進(jìn)化不脫發(fā)!  
圖片剪裁是常用的方法,那么如何通過4坐標(biāo)剪裁圖片,本文就詳細(xì)的來介紹一下,感興趣的小伙伴們可以參考一下

本文主要介紹了python opencv通過4坐標(biāo)剪裁圖片,分享給大家,具體如下:

效果展示,

在這里插入圖片描述

裁剪出的單詞圖像(如下)

請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述

這里程序我是用在paddleOCR里面,通過識(shí)別模型將識(shí)別出的圖根據(jù)程序提供的坐標(biāo)(即四個(gè)頂點(diǎn)的值)進(jìn)行摳圖的程序(上面的our和and就是扣的圖),并進(jìn)行了封裝,相同格式的在這個(gè)基礎(chǔ)上改就是了

[[[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]], ]

從程序得到的數(shù)據(jù)格式大概長(zhǎng)上面的樣子,由多個(gè)四個(gè)坐標(biāo)一組的數(shù)據(jù)(如下)組成,即下面的[368.0, 380.0]為要裁剪圖片左上角坐標(biāo),[437.0, 380.0]為要裁剪圖片右上角坐標(biāo),[437.0, 395.0]為要裁剪圖片右下角坐標(biāo),[368.0, 395.0]為要裁剪圖片左下角坐標(biāo).

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

而這里剪裁圖片使用的是opencv(由于參數(shù)的原因沒有設(shè)置角度的話就只能裁剪出平行的矩形,如果需要裁減出不與矩形圖片編譯平行的圖片的話,參考這個(gè)博客進(jìn)行進(jìn)一步的改進(jìn)點(diǎn)擊進(jìn)入)

裁剪部分主要是根據(jù)下面這一行代碼進(jìn)行的,這里要記住(我被這里坑了一下午),
參數(shù) tr[1]:左上角或右上角的縱坐標(biāo)值
參數(shù)bl[1]:左下角或右下角的縱坐標(biāo)值
參數(shù)tl[0]:左上角或左下角的橫坐標(biāo)值
參數(shù)br[0]:右上角或右下角的橫坐標(biāo)值

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

在這里插入圖片描述

總的程序代碼如下

import numpy as np
import cv2


def np_list_int(tb):
    tb_2 = tb.tolist() #將np轉(zhuǎn)換為列表
    return tb_2


def shot(img, dt_boxes):#應(yīng)用于predict_det.py中,通過dt_boxes中獲得的四個(gè)坐標(biāo)點(diǎn),裁剪出圖像
    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("打印轉(zhuǎn)換成功數(shù)據(jù)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] #測(cè)試
            # crop = img[380:395, 368:119]

            cv2.imwrite("K:/paddleOCR/PaddleOCR/screenshot/a/" + str(num) + ".jpg", crop)

            num = num + 1
        else:
            break


def 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("打印轉(zhuǎn)換成功數(shù)據(jù)")
    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)

特別注意對(duì)np類型轉(zhuǎn)換成列表,以及crop = img[tr[1]:bl[1], tl[0]:br[0]]的中參數(shù)的位置,

實(shí)例

用了兩種方法保存圖片,opencv和Image,實(shí)踐證明opencv非常快

from PIL import Image
import os
import cv2
import time
import matplotlib.pyplot as plt
def 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項(xiàng)目\\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')

到此這篇關(guān)于python opencv通過4坐標(biāo)剪裁圖片的文章就介紹到這了,更多相關(guān)opencv 剪裁圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)Pig Latin小游戲?qū)嵗a

    Python實(shí)現(xiàn)Pig Latin小游戲?qū)嵗a

    這篇文章主要介紹了Python實(shí)現(xiàn)Pig Latin小游戲?qū)嵗a,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • python如何求解兩數(shù)的最大公約數(shù)

    python如何求解兩數(shù)的最大公約數(shù)

    這篇文章主要為大家詳細(xì)介紹了python如何求解兩數(shù)的最大公約數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python實(shí)現(xiàn)事件驅(qū)動(dòng)

    python實(shí)現(xiàn)事件驅(qū)動(dòng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)事件驅(qū)動(dòng)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python pexpect模塊及shell腳本except原理解析

    Python pexpect模塊及shell腳本except原理解析

    這篇文章主要介紹了Python pexpect模塊及shell腳本except原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python unittest單元測(cè)試框架及斷言方法

    Python unittest單元測(cè)試框架及斷言方法

    這篇文章主要介紹了Python unittest單元測(cè)試框架及斷言方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python 中導(dǎo)入文本文件的示例代碼

    Python 中導(dǎo)入文本文件的示例代碼

    這篇文章主要介紹了如何在 Python 中導(dǎo)入文本文件,在Python中導(dǎo)入文本文件是很常見的操作,我們可以使用內(nèi)置的open函數(shù)和with語(yǔ)句來讀取或?qū)懭胛谋疚募?,需要的朋友可以參考?/div> 2023-05-05
  • 一文帶你了解python中的多態(tài)性

    一文帶你了解python中的多態(tài)性

    多態(tài)性是 OOP 的一個(gè)特征,這意味著一個(gè)名稱可以具有不同的功能, 這篇文章主要為大家詳細(xì)介紹了如何在 Python 中實(shí)現(xiàn)多態(tài)性,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-11-11
  • Python Django查詢集的延遲加載特性詳解

    Python Django查詢集的延遲加載特性詳解

    在 Django 的開發(fā)過程中,查詢集(QuerySet)是我們與數(shù)據(jù)庫(kù)進(jìn)行交互的重要工具,本文將深入探討 Django 查詢集的延遲加載特性,幫助新手理解其工作原理及優(yōu)缺點(diǎn),提供一些實(shí)用的代碼示例來展示延遲加載如何在實(shí)際項(xiàng)目中使用,需要的朋友可以參考下
    2024-10-10
  • Python實(shí)現(xiàn)抓取HTML網(wǎng)頁(yè)并以PDF文件形式保存的方法

    Python實(shí)現(xiàn)抓取HTML網(wǎng)頁(yè)并以PDF文件形式保存的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)抓取HTML網(wǎng)頁(yè)并以PDF文件形式保存的方法,結(jié)合實(shí)例形式分析了PyPDF2模塊的安裝及Python抓取HTML頁(yè)面并基于PyPDF2模塊生成pdf文件的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python中拆包的實(shí)現(xiàn)

    Python中拆包的實(shí)現(xiàn)

    拆包是一個(gè)非常實(shí)用且常見的操作,它能夠簡(jiǎn)化代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07

最新評(píng)論

读书| 沁水县| 隆德县| 巫山县| 承德县| 北安市| 镇赉县| 襄汾县| 巍山| 台东市| 左云县| 肃宁县| 西畴县| 陆河县| 日照市| 本溪市| 雅江县| 泗阳县| 库尔勒市| 芒康县| 易门县| 甘南县| 息烽县| 保德县| 绵竹市| 安达市| 日照市| 新营市| 乾安县| 溆浦县| 丽江市| 福州市| 榆林市| 三都| 新密市| 松桃| 武乡县| 仙居县| 若尔盖县| 海门市| 涟水县|