
下面就一個例子簡單體會一下cv2的簡單應用例子:
問題設定場景:一個檔案夾里面包含了許多檔案,要把所有是圖片的找出來,并且展示,同時修改圖片的名字(格式隨便自己定)
注:筆者這里定義格式為1-9 images檔案夾在F盤里面的my_opencv下的exp01檔案夾下
Settle:
1.先遍歷檔案夾,找到對應的圖片(通過后綴名字查找).jpg/.png
2.修改圖片的命名格式
3.展示圖片(直接cv2.imshow() or matlab中的plot.imshow())
開始檔案夾的目錄構成:

'''
Author: Never Leung
Date: 2021-10-31 17:20:40
LastEditTime: 2021-10-31 19:40:49
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \exp01\1-3.py
'''
import cv2
import os
import numpy as np
from matplotlib import pyplot as plt
path22='F:\my_opencv\exp01\images' #檔案夾所在的位置
k=1
#遍歷檔案夾下的所有檔案或者檔案夾,訪問到的檔案或者檔案夾以串列形式回傳
for filename in os.listdir(path22):
#判斷后綴名是否為圖片 字串.endswith('后綴字串')
if filename.endswith('.jpg') or filename.endswith('.png'):
#通過os.path.join()拼接,找到圖片的所在的絕對路徑,然后顯示出來
oldname1 = os.path.join(path22, filename)
img=cv2.imread(oldname1)
cv2.imshow(filename,img)
#修改命名格式為指定格式
img_index=filename.index('.')
filename_qianzhui=filename[:img_index]
filename=filename.replace(filename_qianzhui,str(k))
k+=1
newname1 = os.path.join(path22, filename)
#正式修改名字(按指定格式) os.rename
os.rename(oldname1, newname1)
cv2.waitKey(1000)
cv2.destroyAllWindows()
#修改完圖片的名字的基礎上,再次利用matlab里面的plot中的subplot方法進行多張圖片在同一視窗中展示
for filename in os.listdir(path22):
#判斷后綴名是否為圖片 字串.endswith('后綴字串')
if filename.endswith('.jpg') or filename.endswith('.png'):
#通過os.path.join()拼接,找到圖片的所在的絕對路徑,然后顯示出來
oldname1 = os.path.join(path22, filename)
img=cv2.imread(oldname1)
#為用pyplot顯示圖片比較美觀,所以裁剪圖片大小
img=cv2.resize(img,(200,200))
plt.subplot(2,4,k)
plt.title(filename)
plt.axis('off')
plt.imshow(img)
k+=1
plt.show()
執行代碼后,檔案夾下的圖片的名字變為:

至于圖片的展示:第一種圖片的展示為每隔1s圖片就會按順序展示出來,第二種圖片的展示是在一個視窗中展示多張圖片,使得更加美觀和有對比性,第二種圖片的效果圖如下

總結:
涉及到的庫:os,matlib.plot,cv2
知識點:
1.os.listdir(對應檔案夾存放路徑)來遍歷檔案夾下的一級內容,以串列形式回傳
2.字串的startswith() or endswith()方法判斷前綴或者后綴
3.使用os庫時找對應檔案時,并不能只是單純的字串拼接,即用'+'連接,只能用os.path.join()來連接對應檔案的檔案名之前的路徑和檔案名,這樣才相當于找到對應檔案,
4.檔案改名,利用os.rename(舊名,新名)
5.用matlib中的plot.subplot(行數,列數,對應第幾個位置)時,要協調好總的展示的圖片數和行列數的映射關系,否則會造成數目和維數不對而進行報錯,就本例子而言,一共有8張圖片,如果你分層時,設定為(2,2)就會報錯,從第5張圖片開始,因為一共只有4個格讓你放圖片,
6.最后plot的圖片展示不僅要在plot.imshow(),還要在最后加一句plot.show(),最終結果才會呈現,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/344401.html
標籤:其他
上一篇:Mac 環境下opencv-python安裝成功的經歷
下一篇:Ubantu編譯OpenCV
