成都網(wǎng)站制作公司成人速成班有哪些專業(yè)
文章目錄
- 相關(guān)鏈接
- 視頻流讀取
- C++
- CSharp
- Python
- 總結(jié)
相關(guān)鏈接
C++&Python&Csharp in OpenCV 專欄
【2022B站最好的OpenCV課程推薦】OpenCV從入門到實(shí)戰(zhàn) 全套課程(附帶課程課件資料+課件筆記)
OpenCV 教程中文文檔|OpenCV中文
OpenCV教程中文文檔|W3Cschool
OpenCV基礎(chǔ)教程——視頻的讀取與寫入(超詳細(xì)+附代碼)
視頻流讀取
我之前寫過一篇基于Python的,我現(xiàn)在重新寫一次
Python+OpenCV 零基礎(chǔ)學(xué)習(xí)筆記(4-5):計(jì)算機(jī)圖形基礎(chǔ)+Python相對(duì)文件路徑+OpenCV圖像+OpenCV視頻
如果你想要一個(gè)簡單的B站視頻流下載器,這里推薦一個(gè)
嗶哩下載姬downkyi_v1.6.1 下載
如果想獲取視頻流,B站上面隨便搜一下就可以
卓特視覺視頻素材 B站賬號(hào)
于我何方 B站賬號(hào)
比如我這里下載一個(gè)視頻素材
【4K】群山無版權(quán)視頻素材-6
C++
OpenCV基礎(chǔ)教程——視頻的讀取與寫入(超詳細(xì)+附代碼)
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{VideoCapture video("D:/workSpace/OpenCV/HellOpenCV/Resources/video/test.mp4");//video.open("");auto isOpen = false;Mat frame;if (video.isOpened()) {//讀取第一幀視頻isOpen = video.read(frame);}else {cout<< "不存在此視頻" << endl;}while (isOpen){ //不斷的判斷下一幀是否為空isOpen = video.read(frame);//如果為空則跳出循環(huán)if(frame.empty()){break;}imshow("C++", frame);int keyValue = waitKey(10);//27是ESC的ASCLL碼,按下ESC退出if (keyValue == 27) {break;}}cout << "播放結(jié)束" << endl;//釋放視頻流video.release();//關(guān)閉所有窗口destroyAllWindows();return 0;
}
CSharp
internal class Program
{static void Main(string[] args){VideoCapture video = new("D:/workSpace/OpenCV/HellOpenCV/Resources/video/test.mp4");//video.open("");var isOpen = false;Mat frame = new Mat();if (video.IsOpened()){//讀取第一幀視頻isOpen = video.Read(frame);}else{Console.WriteLine("不存在此視頻");}while (isOpen){//不斷的判斷下一幀是否為空isOpen = video.Read(frame);//如果為空則跳出循環(huán)if (frame.Empty()){break;}Cv2.ImShow("CSharp", frame);int keyValue =Cv2.WaitKey(10);//27是ESC的ASCLL碼,按下ESC退出if (keyValue == 27){break;}}Console.WriteLine("播放結(jié)束");//釋放視頻流video.Release();//關(guān)閉所有窗口Cv2.DestroyAllWindows();}
}
Python
Python我們改改代碼,試著輸出一下灰度視頻流
# %%
# 導(dǎo)入包
import cv2
import matplotlib.pyplot as plt
import numpy as np# 導(dǎo)入視頻
input_video = {}
# 下載好的視頻文件
input_video['vc'] = cv2.VideoCapture('D:/workSpace/OpenCV/HellOpenCV/Resources/video/test.mp4')
# 判斷是否讀取成功
if input_video['vc'].isOpened():# Python語法,元組讀取input_video['open'] = input_video['vc'].read()
else:input_video['open'] = False# 循環(huán)幀讀取,兩個(gè)退出條件:視頻播放完/輸入'ESC'退出
while input_video['open']:open,frame = input_video['vc'].read()if frame is None:break;if open:# 我們先播放灰度圖像gray = cv2.cvtColor(frame)# 打開一個(gè)名為result的窗口,播放幀cv2.imshow('result',gray)# 這個(gè)是特殊組合,waiteKey指每幀的時(shí)間,輸入'esc'退出視頻播放if cv2.waitKey(10) & 0xff == 27:break;# 釋放視頻輸入流
input_video['vc'].release();
# 關(guān)閉所有窗口
cv2.destroyAllWindows();
這里圖像顯示有點(diǎn)問題,分辨率不對(duì)。我后面有空去網(wǎng)上找找解決方案
總結(jié)
詳細(xì)的可以看這個(gè)博客,介紹的比較全面
OpenCV基礎(chǔ)教程——視頻的讀取與寫入(超詳細(xì)+附代碼)
經(jīng)過這次代碼書寫,我發(fā)現(xiàn)確實(shí),算子基本差不多,尤其是C++和Csharp,跑通了C++,Csharp也差不多就通了。Python簡化的比較多,大致上也是調(diào)用算子。