OpenCV提供了專門操做視頻的接口類VideoCaptureios
VideoCapture::VideoCapture()ide
VideoCapture::VideoCapture(const string& filename)函數
VideoCapture::VideoCapture(int device)spa
輸入視頻文件的路徑名稱視頻
打開視頻操做索引號設置:blog
攝像頭設置爲0索引
VideoCapture::grab 抓住下一幀的視頻文件或捕獲設備接口
VideoCapture::retrieve 解碼並返回視頻幀資源
VideoCapture& VideoCapture::operator >> (Mat& image)get
VideoCapture::open 打開視頻文件或視頻獲取裝置
VideoCapture::isOpened 判斷視頻文件讀取是否正確,返回true則正確
VideoCapture::release 關閉視頻流文件
videoCapture::get 返回指定視頻類的相關參數信息
VideoCapture::set 設置類信息的一個屬性
bool VideoCapture::read(Mat& image) //解碼返回下一個視頻幀
VideoWriter
#include <iostream> #include "opencv2/opencv.hpp" using namespace std; using namespace cv; int main(int argc, char* argv[]) { // 打開第一個攝像頭 // VideoCapture cap(0); // 打開視頻文件 VideoCapture cap("k1.avi"); // 檢查是否成功打開 if (!cap.isOpened()) { cerr << "Can not open a camera or file" << endl; return -1; } Mat edges; // 建立窗口 namedWindow("edges", 1); for(;;) { Mat frame; // 從cap中讀一幀,存到frame cap >> frame; // 若是未讀到圖像 if (frame.empty()) break; // 將讀到的圖像轉爲灰度圖 cvtColor(frame, edges, CV_BGR2GRAY); // 進行邊緣提取操做 Canny(edges, edges, 0, 30, 3); // 顯示結果 imshow("edges", frame); // 等待30秒,若是按鍵則退出循環 if (waitKey(30) >= 0) break; } // 退出時會自動釋放cap中佔用資源 return 0; }
圖像類似度主要是對兩幅圖像內容的類似程度進行打分,根據分數的高低來判斷圖像內容的類似程度.
圖像比較有兩種方法:峯值信噪比(PSNR,Peak Signal to Noise Ratio)和結構類似性(SSIM,tructural similarity index)