自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 OpenCV 從 Python 視頻中提取圖像

開發(fā)
在這篇博客中,我們將使用Python從一段小視頻中提取圖像。為此,我們將使用開源的OpenCV庫。

在這篇博客中,我們將使用Python從一段小視頻中提取圖像。為此,我們將使用開源的OpenCV庫。

什么是OpenCV?

OpenCV(開源計(jì)算機(jī)視覺庫:http://opencv.org)是一個(gè)包含數(shù)百種計(jì)算機(jī)視覺算法的開源庫。OpenCV具有模塊化結(jié)構(gòu),這意味著該包包含幾個(gè)共享或靜態(tài)庫。以下是可用的模塊:

  1. 核心功能(core) - 一個(gè)定義基本數(shù)據(jù)結(jié)構(gòu)的緊湊模塊,包括密集的多維數(shù)組Mat和所有其他模塊使用的基本功能。
  2. 圖像處理(imgproc) - 一個(gè)圖像處理模塊,包括線性和非線性圖像濾波、幾何圖像變換(縮放、仿射和透視變形、通用表格重映射)、顏色空間轉(zhuǎn)換、直方圖等。
  3. 視頻分析(video) - 一個(gè)視頻分析模塊,包括運(yùn)動(dòng)估計(jì)、背景減除和目標(biāo)跟蹤算法。
  4. 相機(jī)校準(zhǔn)和3D重建(calib3d) - 基本的多視圖幾何算法、單目和立體相機(jī)校準(zhǔn)、目標(biāo)姿態(tài)估計(jì)、立體對(duì)應(yīng)算法和3D重建元素。
  5. 2D特征框架(features2d) - 顯著特征檢測器、描述符和描述符匹配器。
  6. 目標(biāo)檢測(objdetect) - 檢測預(yù)定義類別的對(duì)象和實(shí)例(例如,面部、眼睛、杯子、人、汽車等)。
  7. 高級(jí)GUI(highgui) - 一個(gè)簡單易用的簡單UI功能接口。
  8. 視頻I/O(videoio) - 一個(gè)簡單易用的視頻捕獲和視頻編解碼器接口。
  9. ...一些其他輔助模塊,如FLANN和Google測試包裝器、Python綁定等。

文檔的后續(xù)章節(jié)描述了每個(gè)模塊的功能。但首先,請確保熟悉在庫中廣泛使用的常見API概念。

使用pip安裝:

pip install opencv-python

導(dǎo)入包:

import cv2

檢查VideoCapture類的幫助:

help(cv2.VideoCapture())

聲明視頻的路徑:

video_path = "input/extract-images-from-a-video-in-python/sample-video.mp4"
video_path

輸出:‘input/extract-images-from-a-video-in-python/sample-video.mp4’

從路徑讀取視頻:

cam = cv2.VideoCapture(video_path)
cam

輸出:< cv2.VideoCapture 00000209D0E99FB0>

創(chuàng)建一個(gè)文件夾來保存圖像

我們將創(chuàng)建一個(gè)名為‘image_data’的文件夾,如果它不存在。為了創(chuàng)建新目錄,我們將使用OS包。

import os
try:
if not os.path.exists('image_data'):
os.makedirs('image_data')
except OSError:
print ('Error: Creating directory of image data')

讀取視頻幀并創(chuàng)建圖像:

help(cam.read)

輸出:

help(cv2.imwrite)

currentframe = 0
while(True):
# 從幀中讀取 
retval, image = cam.read() 


if retval: 
    # 創(chuàng)建圖像 
    name = './image_data/image' + str(currentframe) + '.jpg'
    print ('Creating...' + name) 


    # 寫入提取的圖像 
    cv2.imwrite(name, image) 


    currentframe += 1
else: 
    break
# 釋放空間
cam.release()
# 銷毀所有窗口
cv2.destroyAllWindows()

輸出:

我們可以看到,從視頻中捕獲了85張圖像。

列出捕獲的圖像:

import os
path = "image_data"
images_list = os.listdir(path)
print("Files and directories in '", path, "' :")
print(images_list)

輸出:

查看前20張圖像:

import matplotlib.pyplot as plt
import PIL
plt.figure(figsize = (12,8))
for num, item in enumerate(images_list[:20]):
  img = PIL.Image.open("image_data/" + item)
  plt.subplot(4, 5, num + 1)
  plt.axis('off')
  plt.imshow(img, aspect='auto')
  pass

輸出:

責(zé)任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關(guān)推薦

2023-11-15 13:04:30

Python提取表格

2020-07-08 07:54:03

PythonPDF數(shù)據(jù)

2021-03-15 21:50:22

Linux提取文本GUI工具

2023-11-29 11:30:17

PDF語言模型

2021-05-13 23:54:12

DockerDockerfile鏡像

2021-03-10 10:20:06

Linux文本命令

2022-11-23 10:31:54

2019-09-29 09:08:41

Python數(shù)據(jù)庫Google

2016-01-26 11:08:54

2022-08-24 15:57:17

圖片輪廓

2021-09-04 23:45:40

機(jī)器學(xué)習(xí)語言人工智能

2013-04-01 11:14:56

IT大數(shù)據(jù)網(wǎng)絡(luò)信息化

2019-09-04 11:09:38

物聯(lián)網(wǎng)數(shù)據(jù)邊緣

2023-04-27 07:06:09

Categraf夜鶯

2014-07-16 17:35:03

Android表單模型

2021-03-16 09:00:00

深度學(xué)習(xí)人工智能傳感器

2021-08-16 11:51:16

微軟Windows 365Azure

2017-09-25 15:43:24

圖像模板Python+Open

2020-05-08 11:12:58

惡意軟件PC安全終端安全

2021-10-21 05:41:27

QueenSono安全工具提取數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)