視頻前景提取 (I)【滑動條版本】
對兩個不同的圖片(取自於視頻)進行差分,然後二值化,隻不過添加進了一個滑動條,可以更直觀的看到變化。
//顯示圖像文件 #include <opencv2/opencv.hpp> #include <stdio.h> using namespace std; //#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") IplImage *img3=NULL; //差分圖 IplImage *img4=NULL; //二值圖 void on_trackbar(int pos) { // 轉為二值圖 cvThreshold(img3, img4, pos, 255, CV_THRESH_BINARY); // 顯示二值圖 cvShowImage("二值圖", img4); } int main() { //從文件中讀取圖像 IplImage *img1 = cvLoadImage("007.jpg", CV_LOAD_IMAGE_UNCHANGED); IplImage *img2 = cvLoadImage("009.jpg", CV_LOAD_IMAGE_UNCHANGED); img3=cvCreateImage(cvGetSize(img1),img1->depth,img1->nChannels); cvAbsDiff(img1,img2,img3); // 對得到的前景進行閾值選取,去掉偽前景 img4=cvCreateImage(cvGetSize(img1),img1->depth,img1->nChannels); //在指定窗口中顯示圖像 cvShowImage("原圖1", img1); cvShowImage("原圖2", img2); cvShowImage("差分", img3); // 創建二值圖窗口 cvNamedWindow("二值圖", CV_WINDOW_AUTOSIZE); // 滑動條 int nThreshold = 0; cvCreateTrackbar("二值圖滑動條", "二值圖", &nThreshold, 254, on_trackbar); on_trackbar(1); //等待按鍵事件 cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&img1); cvReleaseImage(&img2); cvReleaseImage(&img3); cvReleaseImage(&img4); return 0; }

最後更新:2017-04-03 05:39:30