如何實(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í)候,可能會(huì)提示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)文章
使用虛擬環(huán)境打包python為exe 文件的方法
這篇文章主要介紹了關(guān)于使用虛擬環(huán)境打包python為exe 文件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Python?PEP8?代碼規(guī)范常見問題及解決方法
最近換成?PyCharm?寫代碼總是會(huì)出現(xiàn)波浪號(hào),這才了解到?Python?的?PEP8?代碼規(guī)范,所以將常見的?PEP8?代碼規(guī)范問題和解決方法記錄一下,養(yǎng)成良好的習(xí)慣,編寫規(guī)范的代碼2023-09-09Python如何向SQLServer存儲(chǔ)二進(jìn)制圖片
這篇文章主要介紹了Python如何向SQLServer存儲(chǔ)二進(jìn)制圖片,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Python數(shù)據(jù)類型之List列表實(shí)例詳解
這篇文章主要介紹了Python數(shù)據(jù)類型之List列表,結(jié)合實(shí)例形式分析了PythonList列表的概念、功能、定義以及判斷、截取、遍歷、切片等常見操作技巧,需要的朋友可以參考下2019-05-05python中字符串?dāng)?shù)組逆序排列方法總結(jié)
在本篇文章里小編給大家整理了關(guān)于python中字符串?dāng)?shù)組如何逆序排列的相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-06-06Python實(shí)現(xiàn)簡單的ui界面的設(shè)計(jì)步驟(適合小白)
當(dāng)我們書寫一個(gè)python程序時(shí),我們在控制臺(tái)輸入信息時(shí),往往多有不便,并且為了更加美觀且直觀的方式輸入控制命令,我們常常設(shè)計(jì)一個(gè)ui界面,這樣就能方便執(zhí)行相關(guān)功能,如計(jì)算器、日歷等界面,本博客是為了給ui設(shè)計(jì)的小白進(jìn)行講解,需要的朋友可以參考下2024-07-07Python打包exe時(shí)各種異常處理方案總結(jié)
今天教大家用Python打包exe時(shí)各種異常處理的方案總結(jié),下文中有非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助喲,需要的朋友可以參考下2021-05-05