相關(guān)鏈接
C++&Python&Csharp in OpenCV 專欄
【2022B站最好的OpenCV課程推薦】OpenCV從入門(mén)到實(shí)戰(zhàn) 全套課程(附帶課程課件資料+課件筆記)
OpenCV 教程中文文檔|OpenCV中文
OpenCV教程中文文檔|W3Cschool
OpenCV基礎(chǔ)教程——視頻的讀取與寫(xiě)入(超詳細(xì)+附代碼)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-810731.html
視頻流讀取
我之前寫(xiě)過(guò)一篇基于Python的,我現(xiàn)在重新寫(xiě)一次
Python+OpenCV 零基礎(chǔ)學(xué)習(xí)筆記(4-5):計(jì)算機(jī)圖形基礎(chǔ)+Python相對(duì)文件路徑+OpenCV圖像+OpenCV視頻
如果你想要一個(gè)簡(jiǎn)單的B站視頻流下載器,這里推薦一個(gè)
嗶哩下載姬downkyi_v1.6.1 下載
如果想獲取視頻流,B站上面隨便搜一下就可以
卓特視覺(jué)視頻素材 B站賬號(hào)
于我何方 B站賬號(hào)
比如我這里下載一個(gè)視頻素材
【4K】群山無(wú)版權(quán)視頻素材-6
C++
OpenCV基礎(chǔ)教程——視頻的讀取與寫(xiě)入(超詳細(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語(yǔ)法,元組讀取
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)
# 打開(kāi)一個(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)問(wèn)題,分辨率不對(duì)。我后面有空去網(wǎng)上找找解決方案
總結(jié)
詳細(xì)的可以看這個(gè)博客,介紹的比較全面
OpenCV基礎(chǔ)教程——視頻的讀取與寫(xiě)入(超詳細(xì)+附代碼)
經(jīng)過(guò)這次代碼書(shū)寫(xiě),我發(fā)現(xiàn)確實(shí),算子基本差不多,尤其是C++和Csharp,跑通了C++,Csharp也差不多就通了。Python簡(jiǎn)化的比較多,大致上也是調(diào)用算子。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-810731.html
到了這里,關(guān)于C++&Python&C# 三語(yǔ)言O(shè)penCV從零開(kāi)發(fā)(4):視頻流讀取的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!