一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python多張圖片的無損拼接的實現示例

python多張圖片的無損拼接的實現示例

2021-12-15 10:34一只不愛曬太陽的貓 Python

很多人都會是用PS進行拼接,本文主要介紹了python多張圖片的無損拼接的實現示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下

導入 python 庫

?
1
2
3
import matplotlib.pyplot as plt
import skimage.io as io
import numpy as np

查看需要拼接的圖片

因為工作需要,所以就不使用昨天晚上的圖片了。
我就拿了兩張截圖作為示例演示。

首先看看拼接前的圖片是什么樣子:

?
1
2
3
jzg = io.imread('jzg.jpg')   # np.ndarray, [h, w, c], 值域[0, 255], RGB
plt.imshow(jzg)   #查看圖片
plt.show()

解釋說明:“jzg”保存的是numpy的數組。

python多張圖片的無損拼接的實現示例

?
1
2
3
lgz = io.imread('lgz.jpg')   # np.ndarray, [h, w, c], 值域[0, 255], RGB
plt.imshow(lgz)
plt.show()

python多張圖片的無損拼接的實現示例

因為我使用的是 jupyter Notebook,所以圖片顯示的不是太清晰。

查看一下圖片的大小和數組元素的數據類型。

?
1
2
3
4
print(jzg.shape)   #查看圖片的大小
print(jzg.dtype)   #查看數組元素數據類型
print(lgz.shape)
print(lgz.dtype)

輸出:

(720, 1280, 3)
uint8
(720, 1280, 3)
uint8

(720, 1280, 3)表示的是數組的大小,物理意義為[h, w, c],分別是圖片的高度h,圖片的寬度w,圖片的通道數c。

可以看出兩者的大小完全一致,數組元素的數據類型為“uint8”。

查看數組中元素的值域:

?
1
print([jzg.min(), jzg.max()])

輸出:

[0, 255]

橫向拼接

創建拼接用的數組:

?
1
2
3
4
pj1 = np.zeros((720,1280 + 1280,3))   #橫著拼接
pj1[:,:1280,:] = jzg.copy()   #圖片jzg在左
pj1[:,1280:,:] = lgz.copy()   #圖片lgz在右
print(pj1.dtype)   #查看數組元素類型

輸出:

float64

可以看出拼接后的數據類型不一樣了,所以要改一下,不然顯示的就是錯誤的。

?
1
2
3
pj1=np.array(pj1,dtype=np.uint8)   #將pj1數組元素數據類型的改為"uint8"
plt.imshow(pj1)   #查看拼接情況
plt.show()

python多張圖片的無損拼接的實現示例

保存拼接后的圖片

將拼接后的圖片保存在當前目錄下,也可以改為其它的路徑。

?
1
io.imsave('pj1.jpg', pj1)   #保存拼接后的圖片

總結

橫向拼接的代碼總結如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import matplotlib.pyplot as plt
import skimage.io as io
import numpy as np
 
jzg = io.imread('jzg.jpg')   # np.ndarray, [h, w, c], 值域(0, 255), RGB
plt.imshow(jzg)   #查看圖片
plt.show()
 
lgz = io.imread('lgz.jpg')   # np.ndarray, [h, w, c], 值域(0, 255), RGB
plt.imshow(lgz)
plt.show()
 
print(jzg.shape)   #查看圖片的大小
print(jzg.dtype)   #查看數組元素數據類型
print(lgz.shape)
print(lgz.dtype)
 
pj1 = np.zeros((720,1280 + 1280,3))   #橫向拼接
pj1[:,:1280,:] = jzg.copy()   #圖片jzg在左
pj1[:,1280:,:] = lgz.copy()   #圖片lgz在右
print(pj1.dtype)   #查看數組元素類型
 
pj1=np.array(pj1,dtype=np.uint8)   #將pj1數組元素數據類型的改為"uint8"
 
plt.imshow(pj1)   #查看拼接情況
plt.show()
 
io.imsave('pj1.jpg', pj1)   #保存拼接后的圖片

縱向拼接

當然,可以橫向拼接自然也可以縱向拼接,只需將拼接用的數組改為如下:

?
1
pj2 = np.zeros((720 + 720,1280,3))   #橫向拼接

將拼接操作改為:

?
1
2
pj1[:720,:,:] = jzg.copy()   #圖片jzg在上
pj1[720:,:,:] = lgz.copy()   #圖片lgz在下

然后其他步驟都一樣。

圖片間距

有些時候要求要有縫拼接,這時候就將拼接用的數組橫向或縱向變大,空白區域使用“0”或者“255”填充(我不知道“0”和“255”中,哪個代表白色,哪個代表黑色,需要的就自己去實驗或者查詢一下)。

到此這篇關于python多張圖片的無損拼接的實現示例的文章就介紹到這了,更多相關python圖片無損拼接內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_45816066/article/details/106073472

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲天堂一区二区在线观看 | 日韩资源 | 成人免费国产欧美日韩你懂的 | 91亚洲成人 | 国产精品免费一级在线观看 | 美人老师沦为 | 操b图片| 免费看全黄特黄毛片 | 国产视频在线一区 | 日本人成在线视频免费播放 | 国产日韩综合 | 91po国产在线高清福利 | 极品久久 | 日本三级免费观看 | 欧美极品brazzers 高清 | 色婷婷在线 | 男人添女人 | 亚洲sss综合天堂久久久 | 窝窝午夜理伦影院 | yin娃sao货调教情趣用品店 | 欧美色图亚洲 | 好大好硬好深好爽想要吃奶 | 性欧美高清理论片 | 国产九九在线观看播放 | 暖暖视频免费观看视频中国.韩剧 | 免费看视频高清在线观看 | 男人好大好硬好爽免费视频 | 66j8影院xxxx深夜| 胸奶好大好紧好湿好爽 | 日本中文字幕在线视频 | 国语视频高清在线观看 | 99视频在线看 | freefron性中国国产高清 | 国产一区在线免费观看 | 欧美色图亚洲 | 亚洲 在线 日韩 欧美 | 日本中文字幕一区二区有码在线 | 天天色天天舔 | 免费观看在线永久免费xx视频 | 金发美女与黑人做爰 | 久久综合香蕉久久久久久久 |