最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

OpenCV:解決NoneType錯誤(P2)

2022-01-27 11:26 作者:閑予1217  | 我要投稿

書接上文(doge)

案例?#2: CV2.VideoCapture 和?.read

就像我們在使用CV2.imread時看到的NoneType錯誤和AssertionError異常一樣,在處理視頻流/視頻文件時,您也會看到這些錯誤。

為了訪問視頻流,OpenCV使用CV2.VideoCapture,它接受一個參數(shù),可以是:

  1. 表示磁盤上視頻文件路徑的字符串。

  2. 表示計算機(jī)上網(wǎng)絡(luò)攝像頭索引的整數(shù)。

使用OpenCV處理視頻流和視頻文件比簡單地通過CV2加載圖像要復(fù)雜得多。我讀過,但同樣的規(guī)則適用。

如果你試著運(yùn)行.read實例化CV2的方法。VideoCapture(無論是視頻文件還是網(wǎng)絡(luò)攝像頭流)并注意到NoneType錯誤或斷言錯誤,則您可能會遇到以下任一問題:

  1. 輸入視頻文件的路徑(可能不正確)。

  2. 沒有安裝正確的視頻編解碼器,在這種情況下,您需要安裝編解碼器,然后重新編譯并重新安裝OpenCV(有關(guān)完整的教程列表,請參閱本頁:https://www.pyimagesearch.com/opencv-tutorials-resources-guides/?_ga=2.139358459.955629704.1643158794-1706104520.1639213599)。

  3. 無法通過OpenCV訪問您的網(wǎng)絡(luò)攝像頭。這可能是由于多種原因造成的,包括缺少驅(qū)動程序、傳遞給CV2.VideoCapture的索引不正確,或者只是網(wǎng)絡(luò)攝像頭未正確連接到系統(tǒng)。

同樣,處理視頻文件比處理簡單的圖像文件要復(fù)雜得多,所以要確保在解決問題時系統(tǒng)化。

首先,嘗試通過一個獨(dú)立于OpenCV的軟件訪問網(wǎng)絡(luò)攝像頭。

或者,嘗試將視頻文件加載到電影播放器中。

如果這兩種方法都有效,那么您的OpenCV安裝可能會有問題。

否則,很可能是編解碼器或驅(qū)動程序問題。

創(chuàng)建和解決OpenCV NoneType錯誤的示例

為了演示操作中的NoneType錯誤,我決定創(chuàng)建一個高度簡化的Python+OpenCV腳本,它代表了您在PyImageSearch博客的其他地方可能看到的內(nèi)容。

打開一個新文件,將其命名為display_image.py,并插入以下代碼:

這個程序所做的只是:

  • 解析命令行參數(shù)。

  • (嘗試)從磁盤加載映像。

  • 將圖像的寬度、高度和深度打印到終端。

  • 將圖像顯示到屏幕上。

對于大多數(shù)熟悉命令行的Python開發(fā)人員來說,這個腳本不會給您帶來任何麻煩。

但是,如果您是程序小白,對命令行參數(shù)不熟悉,如果不小心,很容易遇到NoneType錯誤。

你可能會說怎么做?

答案在于沒有正確使用/理解命令行參數(shù)。

在過去的幾年里,我運(yùn)行這個博客,看到了許多讀者的電子郵件和博客帖子評論,他們試圖修改這個博客?.add_argument?以提供其圖像文件的路徑。

不要這樣做——你不必更改一行參數(shù)解析代碼。

相反,您應(yīng)該花10分鐘閱讀這篇優(yōu)秀的文章,解釋什么是命令行參數(shù)以及如何在Python中使用它們:

https://pyimagesearch.com/2018/03/12/python-argparse-command-line-arguments/?_ga=2.154734704.955629704.1643158794-1706104520.1639213599

如果你想閱讀PyImageSearch博客上的教程,這是必讀的。

使用命令行,因此使用命令行參數(shù),是計算機(jī)科學(xué)家的一個重要組成部分——缺乏命令行技能只會傷害你。你以后會感謝我的。

回到示例,讓我們檢查一下本地目錄的內(nèi)容:

我們可以看到,我有兩個文件:

display_image.py:我將很快執(zhí)行的Python腳本。

jemma.png?:?我將從磁盤加載的照片。

如果我執(zhí)行以下命令,我將看到j(luò)emma.png顯示在我的屏幕上,以及有關(guān)圖像尺寸的信息:

使用OpenCV和Python將圖像加載并顯示到我的屏幕上。

但是,讓我們嘗試加載一個不存在的映像路徑:

果然,這是我們的????NoneType錯誤。

在本例中,這是因為我沒有向CV2.imread提供有效的圖像路。

總結(jié)

在這篇博文中,我討論了OpenCV和Python中的NoneType錯誤和AssertionError異常。

在絕大多數(shù)情況下,這些錯誤可歸因于CV2.imread或CV2.VideoCapture方法。

無論何時遇到這些錯誤之一,請確保在繼續(xù)之前可以加載圖像/讀取幀。在超過95%的情況下,您的圖像/幀沒有被正確讀取。

否則,如果您使用的是命令行參數(shù),并且對它們不熟悉,則可能是您沒有正確使用它們。在這種情況下,請務(wù)必閱讀本教程中有關(guān)命令行參數(shù)的內(nèi)容,以進(jìn)行自我教育——稍后您將感謝我。

無論如何,我希望本教程能幫助您掌握OpenCV!

如果你剛剛開始學(xué)習(xí)計算機(jī)視覺和OpenCV,我強(qiáng)烈建議你看看這本書《實用Python和OpenCV》,這將幫助你掌握基礎(chǔ)知識。(以下為書記鏈接)

https://www.pyimagesearch.com/practical-python-opencv/?_ga=2.160388981.955629704.1643158794-1706104520.1639213599

不然,也可以關(guān)注我,以便于第一時間看到新的文章和教程

沒想到真么快,兩天搞定一篇文章

OpenCV:解決NoneType錯誤(P2)的評論 (共 條)

分享到微博請遵守國家法律
霍城县| 桐庐县| 荃湾区| 大同县| 巧家县| 桑植县| 西和县| 九江市| 永德县| 宝丰县| 宁明县| 江孜县| 泰州市| 陵水| 洛宁县| 蚌埠市| 信阳市| 会泽县| 虎林市| 明水县| 凤台县| 义乌市| 芜湖县| 托克逊县| 凤城市| 义马市| 新安县| 依兰县| 蚌埠市| 什邡市| 增城市| 贵溪市| 广东省| 通河县| 额尔古纳市| 旬阳县| 遵义市| 乌恰县| 怀集县| 磐安县| 巴林右旗|