1. 程式人生 > >OpenCV攝像頭儲存視訊和影象

OpenCV攝像頭儲存視訊和影象

#include<QCoreApplication>
#include"highgui.h"//包含OpenCV庫標頭檔案
#include"cv.h"
usingnamespacestd;

intmain(intargc,char**argv){//主函式
cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE);//建立視窗,(名字,預設大小)
CvCapture*capture=NULL;//視訊獲取結構,用來作為視訊獲取函式的一個引數
CvVideoWriter*video=NULL;
intn;
capture=cvCreateCameraCapture(
0);//
開啟攝像頭,從攝像頭中獲取視訊 if(!capture)//如果不能開啟攝像頭給出警告 { //cout<<"Cannotopenthecamera."<<endl; return-1; } IplImage*frame;//申請IplImage型別指標,就是申請記憶體空間來存放每一幀影象 inti=0; while(1) { frame=cvQueryFrame(capture);//從攝像頭中抓取並返回每一幀 if(!frame)break;//如果抓取幀為空break打破迴圈否則將抓取的那一幀顯示在建立的視窗上 //建立cvvideowriter物件並分配空間,儲存檔名為camera.avi
,編碼要在執行時選擇,大小就是攝像頭視訊的大小,幀率為32
if(i==0) video=cvCreateVideoWriter("camera.avi",CV_FOURCC('X','V','I','D'),25,cvSize(frame->width,frame->height));//建立CvVideoWriter物件並分配空間 //video=cvCreateVideoWriter("camera.avi",CV_FOURCC('M','P','4','3'),15,cvSize(frame->width,frame->height),1); if(video) { //cout<<"video
writerhascreated!"<<endl;
} n=cvWriteFrame(video,frame); printf("cvWriteFrame%d\n",n); i++; //cout<<n<<endl; cvShowImage("Example2",frame);//在視窗上顯示每一幀 charc=cvWaitKey(33);//延時,每秒鐘約33幀;符合人眼觀看速度; if(c==27)break; //cvReleaseImage(&frame); //由於是死迴圈,而且沒有控制檯,當按下鍵盤esc鍵,將按鍵的ASCII值給C,如果CESCASCII27)迴圈退出退出迴圈; } cvReleaseVideoWriter(&video); cvReleaseCapture(&capture);//釋放記憶體; cvDestroyWindow("Example2");//銷燬視窗 return0; }

下面是儲存圖片的例子:

intmain4()
{
CvCapture*capture=cvCaptureFromCAM(-1);
CvVideoWriter*video=NULL;
IplImage*frame=NULL;
intn;
if(!capture)//如果不能開啟攝像頭給出警告
{
//cout<<"Cannotopenthecamera."<<endl;
return-1;
}
else
{
frame=cvQueryFrame(capture);//首先取得攝像頭中的一幀
video=cvCreateVideoWriter("camera.avi",-1,32,
cvSize(frame->width,frame->height));//建立CvVideoWriter物件並分配空間
//儲存的檔名為camera.avi,編碼要在執行程式時選擇,大小就是攝像頭視訊的大小,幀頻率是32
if(video)//如果能建立CvVideoWriter物件則表明成功
{
//cout<<"VideoWriterhascreated."<<endl;
}
cvNamedWindow("CameraVideo",1);//新建一個視窗
while(1)
{
frame=cvQueryFrame(capture);//CvCapture中獲得一幀
if(!frame)
{
//cout<<"Cannotgetframefromthecapture."<<endl;
break;
}
charImagesName[1024];
sprintf(ImagesName,"Image%.3d.bmp",n);
cvSaveImage(ImagesName,frame);
n=cvWriteFrame(video,frame);//判斷是否寫入成功,如果返回的是1,表示寫入成功
//cout<<n<<endl;
cvShowImage("CameraVideo",frame);//顯示視訊內容的圖片
if(cvWaitKey(2)>0)break;//有其他鍵盤響應,則退出
}
cvReleaseVideoWriter(&video);
cvReleaseCapture(&capture);
cvDestroyWindow("CameraVideo");
}
return0;
}

相關推薦

OpenCV攝像頭儲存視訊影象

#include<QCoreApplication> #include"highgui.h"//包含OpenCV庫標頭檔案 #include"cv.h" usingnamespacestd

YUV格式啟蒙及與RGB的轉換 -- 視訊影象程式設計基礎之二

YUV和RGB詳解 前言 YUV,是一種顏色編碼方法。常使用在各個視訊處理元件中。 YUV在對照片或視訊編碼時,考慮到人類的感知能力,允許降低色度的頻寬。 YUV是編碼true-color時使用的顏色空間(color space)之一. 像Y'UV, YUV, Y

可移植畫素圖格式 PPM,灰度圖格式 PGM,點陣圖格式 PBM 的介紹 -- 視訊影象程式設計基礎之一

可移植畫素圖格式 PPM,灰度圖格式 PGM,點陣圖格式 PBM 的介紹 簡介 可移植畫素圖格式(PPM),可移植灰度圖格式(PGM)和可移植點陣圖格式(PBM)是便於跨平臺的影象格式。有時候也被統稱為 PNM 格式 檔案格式描述 這三種格式其實是一樣的描述方法,只

樹莓派1——攝像頭實時視訊截圖

準備工作:為樹莓派建立遠端連線 我使用的樹莓派2,未其接上電,連上區域網。 我使用的是xrdp來進行遠端桌面連線,首先確定樹莓派系統上已經安裝好了xrdp,在筆記本(系統是win7旗艦版)上開啟遠端桌面連線。   在彈出的對話方塊中輸入樹莓派的IP地址,點選連線。   在彈

視訊影象的關係

在資訊大爆炸的時代,我們獲取資訊的方式越來越多媒體化,我們經常通過影象和視訊來索取我們想要的資訊,那麼視訊和影象到底有什麼區別和聯絡呢,容我細細道來: 首先,記住了哦,視訊的本質即影象哦! 2.影象:是人對視覺感知的物質再現,當下比較主流的分類方法:

Python中呼叫OpenCV介面儲存攝像頭視訊中的影象幀到視訊檔案

Python中呼叫OpenCV介面儲存攝像頭或視訊中的影象幀到視訊檔案 import cv2 cap = cv2.VideoCapture(0) # 開啟攝像頭 size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2

OpenCV學習筆記(9)利用MFC的Picture控制元件顯示影象+播放視訊捕獲攝像頭畫面

P.S.:後面又添加了播放視訊和捕獲攝像頭畫面的功能,其中播放視訊的功能只有 'Play' 和 'Stop',不能實現暫停,《A step-by-step guide to the use of Microsoft Visual C++ and the Intel Ope

Opencv+Python3在WIN10環境下呼叫電腦攝像頭儲存視訊

測試環境:win10 Python-3.7.1 opencv-3.4.2 話不多說,直接上程式碼: # 匯入opencv和numpy的庫檔案 import cv2 import numpy as np # VideoCapture()用來捕獲視訊裝置的ID,device = 0表示只有一個

Python3+OpenCV3影象處理(二)——列印圖片屬性、設定圖片儲存路徑、電腦攝像頭的調取顯示

一. 列印圖片屬性、設定圖片儲存路徑 程式碼如下: #列印圖片的屬性、儲存圖片位置 import cv2 as cv import numpy as np #numpy是一個開源的Python科學計算庫 def get_image_info(image):

影象拼接(二):OpenCV同時開啟兩個攝像頭捕獲視訊

使用OpenCV實現同時開啟兩個USB攝像頭,並實時顯示視訊。如果未檢測有兩個攝像頭,程式會結束併發出“攝像頭未安裝好”的警告。這裡推薦一個小巧的攝像頭視訊捕捉軟體:amcap,使用它可以方便的檢查每個攝像頭是否能正常工作。  捕獲視訊:  #include "opencv

OpenCV處理檔案、視訊攝像頭

影象的本質(影象可以用陣列來表示) import numpy as np import cv2 img = np.zeros((3, 3), dtype=np.uint8) print(img, img.dtype) img = cv2.cvtColor(img, cv2.COLOR_

Opencv—讀取視訊/通過手機攝像頭捕捉視訊儲存成視訊流

1.獲取下載好的視訊並播放視訊 import cv2#引入cv2模組 #設定視訊捕獲 capture = cv2.VideoCapture('0.wmv')#0.wmv表示同一資料夾目錄下的視訊名 while True: ret, frame = capture.read()#變數ret

OpenCV攝像頭視訊資料採集與RTSPRTMP直播

最近比較閒,因此研究了一下通過OpenCV採集攝像頭資料,並同時將視訊流資料推送到RTSP和RTMP。 RTSP服務採用的事開源的LIVE555(需要自己修改和實現部分程式碼)。 RTMP服務採用的是開源的CRtmpServer。 具體的實現細節我就不說了,大概的步驟如下

opencv學習筆記(九)捕獲攝像頭視訊儲存成avi格式

        這個程式引用自下面的部落格,但是執行之後我發現視訊儲存之後,要利用前面提到的opencv播放視訊程式播放,不能用普通播放器播放——而且用前面的opencv程式播放時,影象是倒置的,需要我們在程式裡面改一下。在while(1)裡面加上一句     cvFlip

Python3 + OpenCV 3.3讀取攝像頭儲存視訊檔案

import cv2 ##開啟攝像頭 cap = cv2.VideoCapture(0) ##視訊大小設定,獲取幀寬度,獲取幀高度 sz = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.CAP_PROP_F

Python+Opencv呼叫攝像頭實現人臉識別並儲存視訊儲存空檔案問題解決

前言 本文介紹了利用Python+Opencv實現呼叫攝像頭、進行人臉識別、並儲存為avi格式視訊的程式方法。至於python+opencv測試環境的搭建,回頭再開一個帖子進行介紹。 前期配置 Python2.7+Opencv2.4.13 實現過程 先貼程式碼:

openCV-Python筆記一:影象的讀取、顯示儲存

使用cv2.imread(),cv2.imshow(),cv2.imwrite()讀取、顯示和儲存影象 一、讀入影象 使用函式cv2.imread(filepath,flags)讀入一副圖片 filepath:要讀入圖片的完整路徑flags:讀入圖片的標誌 cv2.I

python 使用OpenCV儲存視訊失敗的解決方案及攝像頭顯示灰色的解決辦法

1.視訊儲存失敗,可能是電腦上沒有裝相應的解碼工具。    方案1:將out = cv2.VideoWriter(name_text.get()+'.avi', fourcc, 20, (640, 480))中的第二個引數 fourcc換成-1,這樣可以在執行的時候跳出來一

Opencv讀取儲存視訊

   在Opencv中我們經常會需要讀取視訊,對視訊進行操作,最後儲存視訊,這裡我們寫了一個示例程式實現讀取視訊,將視訊幀灰度化,最後儲存視訊的一個流程。 //實現對視訊的讀入,灰度化,儲存視訊的功能 #include <cv.h> #include<

opencv中videocapture用法 開啟視訊開啟攝像頭

#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main(int argc, char **argv) {