如何實(shí)現(xiàn)在jupyter notebook中播放視頻(不停地展示圖片)
在解決圖像處理問題的時(shí)候,可以利用opencv打開視頻,并一幀一幀地show出來,但是要用到imshow(),需要本地的界面支持。
代碼如下
# -*- coding:utf-8*-
import cv2
capture = cv2.VideoCapture("D:\\dataset\\chip_gesture.ts")
# 圖像處理函數(shù)
def processImg(img):
# 畫出一個(gè)框
cv2.rectangle(img, (500, 300), (800, 400), (0, 0, 255), 5, 1, 0)
# 上下翻轉(zhuǎn)
# img= cv2.flip(img, 0)
return img
# 一幀幀地show
while (capture.isOpened()):
ret, frame = capture.read()
if not ret:
break
result = processImg(frame)
cv2.imshow('result', result)
# esc鍵退出
if 0xFF & cv2.waitKey(30) == 27:
break
cv2.destroyAllWindows()
capture.release()
但是當(dāng)我們使用jupyter notebook來編寫python程序的時(shí)候,cv2.imshow()就不行了。
最終的解決辦法是使用ipython.display模塊來解決。
from IPython.display import clear_output, Image, display, HTML
import time
import cv2
import base64
current_time = 0
# 圖像處理函數(shù)
def processImg(img):
# 畫出一個(gè)框
cv2.rectangle(img, (500, 300), (800, 400), (0, 0, 255), 5, 1, 0)
# 上下翻轉(zhuǎn)
# img= cv2.flip(img, 0)
# 顯示FPS
global current_time
if current_time == 0:
current_time = time.time()
else:
last_time = current_time
current_time = time.time()
fps = 1. / (current_time - last_time)
text = "FPS: %d" % int(fps)
cv2.putText(img, text , (0,100), cv2.FONT_HERSHEY_TRIPLEX, 3.65, (255, 0, 0), 2)
return img
def arrayShow(imageArray):
ret, png = cv2.imencode('.png', imageArray)
encoded = base64.b64encode(png)
return Image(data=encoded.decode('ascii'))
video = cv2.VideoCapture("/home/mvg/zmc/playgroud/遠(yuǎn)大前程27.mp4")
while(True):
try:
clear_output(wait=True)
ret, frame = video.read()
if not ret:
break
lines, columns, _ = frame.shape
frame = processImg(frame)
frame = cv2.resize(frame, (int(columns / 4), int(lines / 4)))
img = arrayShow(frame)
display(img)
# 控制幀率
time.sleep(0.02)
except KeyboardInterrupt:
video.release()
最終的運(yùn)行效果如下:

不過運(yùn)行這段代碼的時(shí)候,可能會提示iopub_data_rate_limit問題。如果使用配置文件(推薦)來運(yùn)行jupyter notebook的話,修改配置文件
vim ~/.jupyter/jupyter_notebook_config.py
將c.NotebookApp.iopub_data_rate_limit = 10000000一行取消注釋,改變后面的數(shù)據(jù)傳輸上限值,10M差不多能播放視頻(有提示再修改上限)。
不使用配置文件的話,在運(yùn)行時(shí)加上參數(shù)
jupyter notebook –NotebookApp.iopub_data_rate_limit=10000000
以上這篇如何實(shí)現(xiàn)在jupyter notebook中播放視頻(不停地展示圖片)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決python寫入帶有中文的字符到文件錯(cuò)誤的問題
今天小編就為大家分享一篇解決python寫入帶有中文的字符到文件錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python與MongoDB交互的代碼實(shí)現(xiàn)
Python與MongoDB的交互通常通過pymongo庫來實(shí)現(xiàn),pymongo是一個(gè)官方的Python驅(qū)動程序,用于與MongoDB數(shù)據(jù)庫進(jìn)行交互,以下是一個(gè)簡單的示例,具有一定的參考價(jià)值,需要的朋友可以參考下2024-10-10
Python中unittest的數(shù)據(jù)驅(qū)動詳解
這篇文章主要介紹了Python中unittest的數(shù)據(jù)驅(qū)動詳解,數(shù)據(jù)驅(qū)動測試,是一種單元測試框架,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
python爬蟲入門教程--優(yōu)雅的HTTP庫requests(二)
requests 實(shí)現(xiàn)了 HTTP 協(xié)議中絕大部分功能,它提供的功能包括 Keep-Alive、連接池、Cookie持久化、內(nèi)容自動解壓、HTTP代理、SSL認(rèn)證等很多特性,下面這篇文章主要給大家介紹了python爬蟲入門中關(guān)于優(yōu)雅的HTTP庫requests的相關(guān)資料,需要的朋友可以參考下。2017-05-05
python使用requests實(shí)現(xiàn)發(fā)送帶文件請求功能
這篇文章主要介紹了python使用requests實(shí)現(xiàn)發(fā)送帶文件請求,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
Python自動提取項(xiàng)目中導(dǎo)入的庫及其版本信息
在我們有時(shí)需要遷移或部署項(xiàng)目時(shí),需要知道項(xiàng)目所依賴的三方包和版本,本文就來介紹一下Python自動提取項(xiàng)目中導(dǎo)入的庫及其版本信息,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03

