2.影像的載入與儲存
學習視訊可參見python+opencv3.3視訊教學 基礎入門
今天寫的是影像,視訊的載入與儲存
1.影像,數字影像,畫素
1.影像
- 影像:定義為二維函式f(x,y),其中,x,y是空間座標,f(x,y)是點(x,y)的幅值
- 灰度影像:是一個二維灰度(或亮度)函式f(x,y)
- 彩色影像:由三個(如RGB,HSV)二維灰度(或亮度)函式
- RGB:R,紅,G,綠,B,藍
- HSV:H,色調,S,飽和度,V:明度
2.數字影像
- 數字影像:畫素組成的二維排列,可以用矩陣表示
- 單色(灰度)影像:每個畫素的亮度用一個數值來表示,通常數值範圍在0-255,0表示黑,255表示白,其它值表示處於黑白之間的灰度
- 彩色影像:用紅,綠,藍三元組的二維矩陣表示,通常,三元組的每個數值也是在0-255之間,0表示相應的基色在該畫素中沒有,255則代表相應的基色在該畫素中取得最大值
3.畫素
數字影像由二維元素組成,每一個元素具有一個特定位置(x,y)和幅值f(x,y),這些元素就稱為畫素
2.影像資訊獲得
def get_image_info(image):
print("影像型別:",type(image))
print("影像長x寬x通道數:",image.shape)
print("影像長寬通道數相乘所得值:",image.size)
print("影像畫素值型別:",image.dtype)
pixel_data = np.array(image) # 將圖片轉換成陣列
print("畫素大小:", pixel_data)
結果輸出
影像型別: <class 'numpy.ndarray'>
影像長x寬x通道數: (512, 512, 3)
影像長寬通道數相乘所得值: 786432
影像畫素值型別: uint8
畫素大小: [[[128 138 225]
[127 137 224]
[126 136 223]
...
[ 81 68 178]
[ 83 71 183]
[ 84 74 188]]]
3.彩色圖轉灰度圖
def save_image(image):
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) # 將image圖片轉換成灰度圖
cv.imwrite("huidu.png",gray) #將轉換後的圖片儲存為huidu.png
cv.imshow("gray",gray)
原圖與灰度圖對比:
4.獲取視訊
# 獲取視訊
def video_demo():
capture = cv.VideoCapture(0) #0指筆記本的內建攝像頭,可以設定成1或其他的來選擇成別的攝像頭
print("型別",type(capture))
while True:
ret, frame = capture.read() # 獲取相機影像,返回ret(結果為True/False),和每一幀圖片
frame = cv.flip(frame, 1) # 將圖片水平翻轉,豎直翻轉為0
print('1', ret) # 列印出ret值
cv.imshow("video", frame) # 將每一幀圖片放入video視窗
c = cv.waitKey(50) # 等有鍵輸入(這裡指c=Esc鍵)或者50ms後自動將視窗消除
if c == 27: #如果按esc退出的話,這裡必須是等於27,27是esc的ASCLL十進位制表示
break
5.視訊儲存
def save_video():
cap = cv.VideoCapture(0)
#FourCC是用於指定視訊編解碼器的4位元組程式碼
#在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2。(最好使用XVID。MJPG會生成大尺寸的視訊。X264會生成非常小的尺寸的視訊)
#在Windows中:DIVX(尚待測試和新增)
#在OSX中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。
fourcc = cv.VideoWriter_fourcc('D', 'I','V', 'X')
# 引數說明:輸出視訊名稱,編碼格式,播放頻率,幀的大小
out = cv.VideoWriter("../images/xiaoguo.avi", fourcc, 50.0, (640, 480))
while cap.isOpened(): # 你可以使用 cap.isOpened(),來檢查是否成功初始化了
ret, frame = cap.read()
if ret is True:
out.write(frame)
cv.imshow('frame', frame)
if cv.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
- cv.waitKey(1) & 0xFF == ord(‘key’):
- 功能:若鍵盤輸入'key',視訊停止錄製並儲存
- 引數:
1:表示延時1ms切換到下一幀影像,對於視訊而言;
0:只顯示當前幀影像,相當於視訊暫停;
key:要輸入鍵盤的鍵 - 返回值:ord(’ ')將字元轉化為對應的整數(ASCII碼)
- 科普
- 視訊中每一幀代表一幅影像
- 幀的大小也就是影像的的大小即影像的寬,高
OpenCv中讀取的視訊是沒有聲音的
結語
以上內容僅是自我學習時記錄的筆記,歡迎大家批評指正,一起學習進步。迎大家關注我的公眾號小郭學資料
相關文章
- Tensorflow SavedModel模型的儲存與載入模型
- 訓練模型的儲存與載入模型
- Tensorflow模型的儲存與恢復載入模型
- tf.keras: 儲存與載入模型Keras模型
- opencv學習筆記(二)-- 載入、修改和儲存影像OpenCV筆記
- C++之OpenCV入門到提高002:載入、修改、儲存影像C++OpenCV
- Pytorch模型檔案`*.pt`與`*.pth` 的儲存與載入PyTorch模型
- spacy儲存和載入模型模型
- 【小白學PyTorch】19 TF2模型的儲存與載入PyTorchTF2模型
- [PyTorch 學習筆記] 7.1 模型儲存與載入PyTorch筆記模型
- pytorch-模型儲存與載入自己訓練的模型詳解PyTorch模型
- Transformers 儲存並載入模型 | 八ORM模型
- 儲存載入模型model.save()模型
- 機器學習之儲存與載入.pickle模型檔案機器學習模型
- tensorflow模型持久化儲存和載入模型持久化
- Pytorch | Tutorial-07 儲存和載入模型PyTorch模型
- Java 載入、操作和儲存WPS文字文件Java
- 物件儲存服務的影像處理特性物件
- OpenCV-Java版學習(2.影像入門)OpenCVJava
- Matlab | 儲存影像無白色邊框。Matlab
- 儲存過程與儲存函式儲存過程儲存函式
- python PIL 開啟\顯示\儲存影像Python
- 【C語言進階】通訊錄的儲存和載入C語言
- 儲存新圖譜:DNA儲存的邊界與天地
- 使用Spark載入資料到SQL Server列儲存表SparkSQLServer
- 7-03. 實現資料儲存和載入的邏輯
- Gartner:浪潮儲存進入分散式儲存前三分散式
- Oracle 共享儲存掛載Oracle
- Spark SQL使用簡介(3)--載入和儲存資料SparkSQL
- 在 Python 中儲存和載入機器學習模型Python機器學習模型
- 全面解析Pytorch框架下模型儲存,載入以及凍結PyTorch框架模型
- 雲原生儲存詳解:容器儲存與 K8s 儲存卷K8S
- 短視訊系統,獲取camera的的影像並儲存
- MySQL入門--儲存引擎MySql儲存引擎
- MATLAB批量儲存影像和顯示演算法處理的影像不留空白Matlab演算法
- 影像延遲載入 && 列表圖順序載入
- 使用 JDAudioCrawler 將下載的音訊儲存到本地儲存音訊
- 直播軟體開發,影像視訊的讀取與儲存,以及呼叫相機拍攝