opencv读取USB视频采集卡帧-调整分辨率-连续帧成视频流-每帧模板匹配找图

VideoCapture capture;

capture.open(0, CAP_DSHOW);
capture.set(CAP_PROP_FRAME_WIDTH, 1920);
capture.set(CAP_PROP_FRAME_HEIGHT, 1080);
Mat matFrame;
capture.read(matFrame);

imshow("Show Frame", matFrame);

capture.release();

1- 调整分辨率 capture.set 应当写在 open 后面,先有开启设备,才有图像分辨率调整

2- 分辨率太高 如上,将导致 imshow 窗口显示 黑屏。通过Debug跟踪,Frame 默认为 640 * 480 ;

  如上调整参数后,就本机而言,Frame 也只能获取到 1360 * 768,用此数据设置,有显示但分辨率有很好改善,但依然不满意,起码不是黑窗口或低分       辨率 (我的采集卡连接电脑的分辨率是 1920 * 1080,设置不合适的分辨率就是黑的,合适(大概是同比例吧?)就可以)

3- 跑程序的笔记本的分辨率是 1366 * 768 ,也是最大设置值,是不是受这个限制?调整 笔记本 分辨率为 1280 * 720,原分辨率参数可以运行!

    OBS软件可以设置更高图像分辨率,且更加清晰,就是屏蔽放不下,不拉伸是不是可以实现高分辨率?

4- 上面的   capture.read(matFrame);

      imshow("Show Frame", matFrame); 

  放入 while((char)waitkey(33) != 'q' ) 循环,就成了连续画面,每帧读取后,用opencv的匹配模板 6种模式 找图 matchtTemplate(  )

5- 卡帧特别厉害了 ,计划用多线程提高效率 ,CreateThread 或者 _beginthreades,前者听说 "前面的有BUG,一般都用后面的 "。

6- 弄来弄去,模板匹配 还是 太垃圾了!

posted @ 2024-03-17 11:22  O-Y  阅读(149)  评论(0编辑  收藏  举报