(一)opencv 視屏讀寫
本文主要是寫了關於opencv視屏讀寫的操作
1.第一段程式碼是寫了一個從左上角到右下角1-100不斷變換的視屏,最後進行儲存
2.第二段程式碼是寫了一個從電腦攝像頭讀取視屏並儲存的視屏
3.第三段程式碼是兩者的綜合
下面是具體的程式碼
//視屏繪製影象
#include <stdio.h>
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{ //定義視訊的寬度和高度
Size s(320, 240);
//建立 writer,並指定 壓縮格式 及 FPS 等引數
VideoWriter writer = VideoWriter("myvideo.avi",-1, 25, s);//【名稱、壓縮格式(這裡手動選擇)、幀率、視屏長寬(解析度)】特別說明倒數第三個必須為 -1 否則會報錯
//檢查是否成功建立
if(!writer.isOpened())
{
cerr << "Can not create video file.\n" << endl;
return -1;
}
//視訊幀
Mat frame(s, CV_8UC3);
for (int i = 0; i < 100; i++)
{ //將影象置為黑色
frame = Scalar::all(255);
//將整數 i 轉為 i 字串型別
char text[128];
snprintf(text, sizeof(text), "%d", i);
//將數字繪到畫面上
putText(frame, text, Point(s.width*i/100, s.height*i/100), FONT_HERSHEY_SCRIPT_SIMPLEX, 3,
Scalar(0,0,255), 3, 8); //【圖片、文字、文字框左下角、字型、字型大小、顏色、寬度、線型】
//將影象寫入視訊
writer << frame;
}
//退出程式時會自動關閉視訊檔案
return 0;
}
//呼叫攝像頭寫視屏
#include <stdio.h>
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{ //定義視訊的寬度和高度
Size s(320, 240);
//建立 writer,並指定 壓縮格式 及 FPS 等引數
VideoCapture video(0);
//VideoCapture cap("video.short.raw.avi"); //開啟指定視屏
Mat frame;
Size videoSize(1280, 960);
VideoWriter writer("myvideo.avi", -1, 25, Size(frame.cols, frame.rows));//【名稱、壓縮格式(這裡手動選擇)、幀率、視屏長寬(解析度)】特別說明倒數第三個必須為 -1 否則會報錯
//檢查是否成功建立
while(video.isOpened())
{
video >> frame;
writer << frame;
imshow("video", frame);
if (waitKey(20) == 27)//27是鍵盤摁下esc時,計算機接收到的ascii碼值
{
break;
}
}
//退出程式時會自動關閉視訊檔案
return 0;
}
//二者綜合
#include <stdio.h>
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{ //定義視訊的寬度和高度
//建立 writer,並指定 壓縮格式 及 FPS 等引數
VideoCapture video(0);
int w = static_cast<int>(video.get(CAP_PROP_FRAME_WIDTH));//獲取影象寬度
int h = static_cast<int>(video.get(CAP_PROP_FRAME_HEIGHT));//獲取影象高度
Size S(w, h);
Mat frame;
Size videoSize(1280, 960);
VideoWriter writer("myvideo.avi", -1, 25, Size(frame.cols, frame.rows));//【名稱、壓縮格式(這裡手動選擇)、幀率、視屏長寬(解析度)】特別說明倒數第三個必須為 -1 否則會報錯
//檢查是否成功建立
int i = 1;
while (video.isOpened())
{
if (i++ > 100) i = 1;
video >> frame;
char text[128];
snprintf(text, sizeof(text), "%d", i);
//將數字繪到畫面上
putText(frame, text, Point(S.width*i / 100, S.height*i / 100), FONT_HERSHEY_SCRIPT_SIMPLEX, 3,
Scalar(0, 0, 255), 3, 8); //【圖片、文字、文字框左下角、字型、字型大小、顏色、寬度、線型】
//將影象寫入視訊
writer << frame;
imshow("video", frame);
if (waitKey(20) == 27)//27是鍵盤摁下esc時,計算機接收到的ascii碼值
{
break;
}
}
//退出程式時會自動關閉視訊檔案
return 0;
}
//putText 引數解釋
CV_EXPORTS_W void putText( InputOutputArray img, //待繪製文字的影象
const String& text,//待繪製的文字
Point org,//文字框左下角
int fontFace,//字型
double fontScale, //字型大小
Scalar color,//字型顏色 FONT_HERSHEY_SCRIPT_SIMPLEX(red)
int thickness = 1,//字型寬度
int lineType = LINE_8, //線性,4/8鄰閾
bool bottomLeftOrigin = false
);
相關文章
- 【OpenCV3】視訊讀寫cv::VideoCapture和cv::VideoWriterOpenCVIDEAPT
- OpenCV-Python 視訊讀取OpenCVPython
- Python opencv USB攝像頭 讀寫PythonOpenCV
- 【opencv五】利用opencv給讀入的視訊新增拖動滑塊OpenCV
- opencv提取視訊每一幀OpenCV
- OpenCV成長之路(1):影象的讀寫與顯示OpenCV
- opencv視訊播放OpenCV
- 閱讀《OpenCV計算機視覺程式設計攻略》是一種怎樣的體驗OpenCV計算機視覺程式設計
- opencv 表格識別之表格透視矯正(一)OpenCV
- CentOS下OpenCV無法讀取視訊檔案的解決方法CentOSOpenCV
- 教你寫一個九宮格鎖屏ViewView
- opengl離屏渲染(不需要和視窗繫結,僅當作一個可以渲染一張圖片的API使用)+ opencv顯示APIOpenCV
- 移動所有視窗到第一屏
- OpenCV進階之路:一個簡化的視訊摘要程式OpenCV
- Python-OpenCV 處理視訊(一): 輸入輸出PythonOpenCV
- opencv視訊人臉檢測OpenCV
- opencv 視訊處理相關OpenCV
- 蘋果手機投屏到電視機?一鍵秒投屏的操作教程蘋果
- unity Webgl播放視屏UnityWeb
- OpenCV讀入圖片序列進行HOG行人檢測並儲存為視訊OpenCVHOG
- OpenCV持久化(一)OpenCV持久化
- Python-OpenCV 處理視訊(一)(二): 輸入輸出 視訊處理PythonOpenCV
- 讀寫
- 一屏統管 智慧交管三維視覺化大屏雲控系統視覺化
- 新一代MacBook Air:要上視網膜屏?MacAI
- 計算機視覺 OpenCV Android | Mat畫素操作(影象畫素的讀寫、均值方差、算術、邏輯等運算、權重疊加、歸一化等操作)...計算機視覺OpenCVAndroid
- python opencv讀取網路圖片PythonOpenCV
- Python檔案讀寫--錯誤一Python
- Delphi的元件讀寫機制(一) (轉)元件
- 多屏判斷css改寫CSS
- 【iCore系列核心板視訊教程】之 SDRAM 讀寫實驗
- OpenCV環境搭建(一)OpenCV
- opencv-python 讀取同一目錄的多個檔案OpenCVPython
- 視訊人臉檢測——OpenCV版(三)OpenCV
- 讀寫一致性的一些思考
- Python-OpenCV 處理視訊(二): 視訊處理PythonOpenCV
- 資料讀寫壓力大,讀寫分離
- 一招教你無阻塞讀寫 Golang channelGolang