OpenCV在多線(xiàn)程下不能讀取AVI視頻的解決辦法
系統(tǒng)
2019-08-12 09:27:29
1777 0
之前OpenCV在多線(xiàn)程下讀取AVI視頻不奏效的問(wèn)題解決了好久,后來(lái)不得已換成了AVI stream來(lái)解碼。本以為是解決了,在我的筆記本上和臺(tái)式機(jī)上都正常的運(yùn)行,可是到了別人的XP系統(tǒng)中又不能運(yùn)行了,這樣才真正的涉及到本質(zhì)問(wèn)題,一樣是不行的,為什么呢?查了很久,之前AVIFILEOPEN這個(gè)函數(shù)的返回值始終是-2147221008,可是都沒(méi)有找到本質(zhì)原因,后來(lái)才發(fā)現(xiàn),要把這個(gè)代碼換成16進(jìn)制就可以搜索到很多相關(guān)的項(xiàng)目了。原來(lái)不是什么OpenCV的bug,是因?yàn)槎嗑€(xiàn)程使用前必須加一句CoInitialize(NULL);來(lái)對(duì)線(xiàn)程進(jìn)行一個(gè)初始化。把這個(gè)簡(jiǎn)單的話(huà)加到AVIStream解碼中和OpenCV解碼的前面,發(fā)現(xiàn)這兩種解碼的方式都可以正常運(yùn)行了。這個(gè)問(wèn)題困擾了我好幾天,卻通過(guò)這么曲折的方式解決掉,實(shí)在讓我有點(diǎn)意外。上網(wǎng)查了一下,發(fā)現(xiàn)這兩個(gè)函數(shù)用來(lái)設(shè)置COM庫(kù)的,可是我怎么知道OpenCV和AVIStream或者是XVID里面是否用到了COM庫(kù)呢?哎,只能吃啞巴虧了,也不可能從頭到尾去專(zhuān)研這個(gè),畢竟只是一個(gè)工具而已,下次記住就OK了。
?
注:
CoInitialize是用來(lái)初始化COM庫(kù)的;
CoUninitialize是用來(lái)對(duì)COM庫(kù)做些清理工作的;
CoInitialize Function
Initializes the COM library on the current thread and identifies the concurrency model as single-thread apartment (STA).New applications should call
CoInitializeEx
instead of CoInitialize
OpenCV在多線(xiàn)程下不能讀取AVI視頻的解決辦法
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】 元
喜歡作者