上次學(xué)會了在win7 vs2015搭建OpenCV3.2開發(fā)環(huán)境宗兼,這幾天練習(xí)了顯示圖像,播放視頻针炉,播放控制和一些簡單圖像處理(縮放,平滑處理殖侵,尋找邊緣)今天試了下從攝像機(jī)讀取數(shù)據(jù)镰烧,發(fā)現(xiàn)打開相機(jī)失敗或者打開后圖像是灰色,沒采到數(shù)據(jù)茉唉。
cvCreateCameraCapture
我一直參考的是布拉德斯基的《學(xué)習(xí)OpenCV》结执。
代碼如下,在參考代碼下稍作了修改
int main1()
{
cvNamedWindow("test9", CV_WINDOW_AUTOSIZE);
CvCapture* capture;
capture = cvCreateCameraCapture(-1);
assert(capture != NULL);
IplImage* frame;
while (1)
{
frame = cvQueryFrame(capture);
if (!frame)
{
break;
}
cvShowImage("test9",frame);
char c = cvWaitKey(50);
if (c == 27)
{
break;
}
}
cvReleaseCapture(&capture);
cvDestroyWindow("test9");
return 0;
}
仔細(xì)核對懂傀,沒發(fā)現(xiàn)什么語法蜡感,邏輯錯(cuò)誤,也嘗試了修改cvCreateCameraCapture的參數(shù)犀斋,也嘗試了網(wǎng)上有些網(wǎng)友的說的加sleep情连,重編OpenCV庫,都無效却舀。后來Google了很多才發(fā)現(xiàn),我現(xiàn)在用的是最新的OpenCV3.2持钉,而書《學(xué)習(xí)OpenCV》是之前較久版本篱昔,而IplImage是較久的C組織結(jié)構(gòu),是OpenCV1.x的版本州刽,網(wǎng)上仍存在有很多這個(gè)版本的例子空执,而新的OpenCV2.X及以上的API使用的C++穗椅,雖然有的案例仍然適用,最好還是以新的demo程序?yàn)闇?zhǔn)吧门坷。
要實(shí)現(xiàn)上面的功能是用Mat
Mat
代碼而簡單宣鄙,如下
int main()
{
VideoCapture capture(0);
Mat src1;
while (true)
{
capture >> src1;
imshow("TestWebCam", src1);
int key = waitKey(10);
if (key == 27)
{
break;
}
}
}