五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2022-03-21 08:28 | 文章來源:源碼之家

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

效果展示,


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







這里程序我是用在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ù)格式大概長上面的樣子,由多個(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] #測試
# 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)

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

實(shí)例

用了兩種方法保存圖片,opencv和Image,實(shí)踐證明opencv非???/p>

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)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

美國服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部