視頻前景提取 (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