python+opencv實現論文插圖局部放大并拼接效果
前言
在制作論文插圖時,有時要求將圖片的局部放大來展示細節(jié)內容,同時將放大圖拼接在原圖上以方便觀察對比。
當然直接利用電腦自帶的畫圖軟件或者別的軟件也可以很方便地實現,但是如果碰到多個算法處理一張圖片后多張圖片進行對比就不太方便了,這里主要貼一下 python 代碼的實現。
cv2.rectangle() 函數
cv2.rectangle(img, pt1, pt2, color, thickness )
功能是在圖片上畫一個矩形框,沒有返回值。
參數列表:
img:圖片
pt1:長方形框左上角坐標
pt2:長方形框右下角坐標
color:字體顏色
thickness:字體粗細
示例
import cv2 image = cv2.imread('F://test.png') pt1 = (10, 190) # 長方形框左上角坐標 pt2 = (160, 270) # 長方形框右下角坐標 cv2.rectangle(image, pt1, pt2, (255, 0, 0), 5) cv2.imshow('demo', image)
cv2.resize() 函數
cv2.resize(src, dsize)
功能是將圖片縮放為指定大小,返回值是改變后的圖片。
參數列表:
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() 函數
np.hstack((img1, img2, ···))
和 np.vstack((img1, img2·, ···))
。np.hstack()
和 np.vstack()
是 numpy 提供的兩個矩陣拼接函數,顧名思義 np.hstack()
是水平方向拼接,np.vstack()
是垂直方向拼接。
參數列表:
img1:第一個圖片
img2:第二個圖片
imgn:第 n 個圖片
要求:輸入圖片的行數或者列數相同
示例
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)
實現局部框定放大拼接
import cv2 import numpy as np image = cv2.imread('F://test.png') # 第一個局部放大圖 pt1 = (150, 70) # 長方形框左上角坐標 pt2 = (250, 130) # 長方形框右下角坐標 cv2.rectangle(image, pt1, pt2, (0, 0, 255), 2) patch1 = image[70:130, 150:250, :] patch1 = cv2.resize(patch1, (200, 120)) # 第二個局部放大圖 pt1 = (265, 70) # 長方形框左上角坐標 pt2 = (365, 130) # 長方形框右下角坐標 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)
總結
到此這篇關于python+opencv實現論文插圖局部放大并拼接效果的文章就介紹到這了,更多相關python+opencv插圖局部放大并拼接內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python異步爬蟲requests和aiohttp中代理IP的使用
本文主要介紹了Python異步爬蟲requests和aiohttp中代理IP的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03