python+opencv實(shí)現(xiàn)論文插圖局部放大并拼接效果
在制作論文插圖時(shí),有時(shí)要求將圖片的局部放大來(lái)展示細(xì)節(jié)內(nèi)容,同時(shí)將放大圖拼接在原圖上以方便觀察對(duì)比。
當(dāng)然直接利用電腦自帶的畫圖軟件或者別的軟件也可以很方便地實(shí)現(xiàn),但是如果碰到多個(gè)算法處理一張圖片后多張圖片進(jìn)行對(duì)比就不太方便了,這里主要貼一下 python 代碼的實(shí)現(xiàn)。
cv2.rectangle() 函數(shù)
cv2.rectangle(img, pt1, pt2, color, thickness ) 功能是在圖片上畫一個(gè)矩形框,沒(méi)有返回值。
參數(shù)列表:
img:圖片
pt1:長(zhǎng)方形框左上角坐標(biāo)
pt2:長(zhǎng)方形框右下角坐標(biāo)
color:字體顏色
thickness:字體粗細(xì)
示例
import cv2
image = cv2.imread('F://test.png')
pt1 = (10, 190) # 長(zhǎng)方形框左上角坐標(biāo)
pt2 = (160, 270) # 長(zhǎng)方形框右下角坐標(biāo)
cv2.rectangle(image, pt1, pt2, (255, 0, 0), 5)
cv2.imshow('demo', image)

cv2.resize() 函數(shù)
cv2.resize(src, dsize) 功能是將圖片縮放為指定大小,返回值是改變后的圖片。
參數(shù)列表:
src: 輸入圖片
dsize:輸出圖片的尺寸
示例
import cv2
image = cv2.imread('F://test.png')
h, w = image.shape[0:2]
print(f'原來(lái)圖片的大?。簕w}×{h}')
image = cv2.resize(image, (150, 300))
h, w = image.shape[0:2]
print(f'縮小后圖片的大小:{w}×{h}')

np.hstack() 和 np.vstack() 函數(shù)
np.hstack((img1, img2, ···)) 和 np.vstack((img1, img2·, ···))。np.hstack() 和 np.vstack() 是 numpy 提供的兩個(gè)矩陣拼接函數(shù),顧名思義 np.hstack() 是水平方向拼接,np.vstack() 是垂直方向拼接。
參數(shù)列表:
img1:第一個(gè)圖片
img2:第二個(gè)圖片
imgn:第 n 個(gè)圖片
要求:輸入圖片的行數(shù)或者列數(shù)相同
示例
import cv2
import numpy as np
image1 = cv2.imread('F://test.png')
image2 = cv2.resize(image1, (150, 300))
image3 = cv2.resize(image1, (550, 410))
image = np.hstack((image1, image2))
image = np.vstack((image, image3))
cv2.imshow('demo', image)

實(shí)現(xiàn)局部框定放大拼接
import cv2
import numpy as np
image = cv2.imread('F://test.png')
# 第一個(gè)局部放大圖
pt1 = (150, 70) # 長(zhǎng)方形框左上角坐標(biāo)
pt2 = (250, 130) # 長(zhǎng)方形框右下角坐標(biāo)
cv2.rectangle(image, pt1, pt2, (0, 0, 255), 2)
patch1 = image[70:130, 150:250, :]
patch1 = cv2.resize(patch1, (200, 120))
# 第二個(gè)局部放大圖
pt1 = (265, 70) # 長(zhǎng)方形框左上角坐標(biāo)
pt2 = (365, 130) # 長(zhǎng)方形框右下角坐標(biāo)
cv2.rectangle(image, pt1, pt2, (0, 255, 0), 2)
patch2 = image[70:130, 265:365, :]
patch2 = cv2.resize(patch2, (200, 120))
# 拼接
patch = np.hstack((patch1, patch2))
image = np.vstack((image, patch))
cv2.imshow('demo', image)
cv2.imwrite('F://test_result.png', image)

總結(jié)
到此這篇關(guān)于python+opencv實(shí)現(xiàn)論文插圖局部放大并拼接效果的文章就介紹到這了,更多相關(guān)python+opencv插圖局部放大并拼接內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信