python+opencv實現(xiàn)論文插圖局部放大并拼接效果
前言
在制作論文插圖時,有時要求將圖片的局部放大來展示細(xì)節(jié)內(nèi)容,同時將放大圖拼接在原圖上以方便觀察對比。
當(dāng)然直接利用電腦自帶的畫圖軟件或者別的軟件也可以很方便地實現(xiàn),但是如果碰到多個算法處理一張圖片后多張圖片進(jìn)行對比就不太方便了,這里主要貼一下 python 代碼的實現(xiàn)。
cv2.rectangle() 函數(shù)
cv2.rectangle(img, pt1, pt2, color, thickness ) 功能是在圖片上畫一個矩形框,沒有返回值。
參數(shù)列表:
img:圖片
pt1:長方形框左上角坐標(biāo)
pt2:長方形框右下角坐標(biāo)
color:字體顏色
thickness:字體粗細(xì)
示例
import cv2
image = cv2.imread('F://test.png')
pt1 = (10, 190) # 長方形框左上角坐標(biāo)
pt2 = (160, 270) # 長方形框右下角坐標(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'原來圖片的大?。簕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 提供的兩個矩陣拼接函數(shù),顧名思義 np.hstack() 是水平方向拼接,np.vstack() 是垂直方向拼接。
參數(shù)列表:
img1:第一個圖片
img2:第二個圖片
imgn:第 n 個圖片
要求:輸入圖片的行數(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)

實現(xiàn)局部框定放大拼接
import cv2
import numpy as np
image = cv2.imread('F://test.png')
# 第一個局部放大圖
pt1 = (150, 70) # 長方形框左上角坐標(biāo)
pt2 = (250, 130) # 長方形框右下角坐標(biāo)
cv2.rectangle(image, pt1, pt2, (0, 0, 255), 2)
patch1 = image[70:130, 150:250, :]
patch1 = cv2.resize(patch1, (200, 120))
# 第二個局部放大圖
pt1 = (265, 70) # 長方形框左上角坐標(biāo)
pt2 = (365, 130) # 長方形框右下角坐標(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實現(xiàn)論文插圖局部放大并拼接效果的文章就介紹到這了,更多相關(guān)python+opencv插圖局部放大并拼接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 定義分?jǐn)?shù)類實現(xiàn)其基本運算(示例代碼)
這篇文章主要介紹了Python 定義分?jǐn)?shù)類實現(xiàn)其基本運算,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
Python并發(fā)concurrent.futures和asyncio實例
這篇文章主要介紹了Python并發(fā)concurrent.futures和asyncio實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
tensorflow之自定義神經(jīng)網(wǎng)絡(luò)層實例
今天小編就為大家分享一篇tensorflow之自定義神經(jīng)網(wǎng)絡(luò)層實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
用python介紹4種常用的單鏈表翻轉(zhuǎn)的方法小結(jié)
這篇文章主要介紹了用python介紹4種常用的單鏈表翻轉(zhuǎn)的方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

