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

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

OpenCV:解決NoneType錯誤(P1)

2022-01-26 19:49 作者:閑予1217  | 我要投稿


每周我都會收到并回復(fù)至少2-3封電子郵件和3-4篇關(guān)于OpenCV和Python中非類型錯誤的博客評論。

對于初學(xué)者來說,這些錯誤可能很難診斷——從定義上講,它們并不是很有用。

由于這個問題經(jīng)常被問到,我決定用一整篇博文來討論這個話題。

雖然導(dǎo)致非類型錯誤的原因幾乎是無限的,但根據(jù)我的經(jīng)驗,無論是作為一名計算機視覺開發(fā)人員,還是在PyImageSearch上與其他程序員聊天,在超過95%的情況下,OpenCV中的非類型錯誤都是由以下任一原因引起的:

  • 傳遞到CV2.imread?.的映像路徑無效。

  • 通過CV2.VideoCapture和相關(guān).read方法從視頻流/視頻文件中讀取幀時出現(xiàn)問題。

要了解有關(guān)OpenCV中NoneType錯誤的更多信息(以及如何避免這些錯誤),請繼續(xù)閱讀。

OpenCV:解決NoneType錯誤

在本文的第一部分中,我將詳細(xì)討論Python編程語言中的NoneType錯誤。

然后,我將討論在一起使用OpenCV和Python時遇到NoneType錯誤的兩個主要原因。

最后,我將給出一個實際的示例,它不僅會導(dǎo)致NoneType錯誤,還可以解決它。

什么是NoneType錯誤?

使用Python編程語言時,不可避免地會遇到如下錯誤:

AttributeError: 'NoneType' object has no attribute ‘something’

可以用實際屬性的任何名稱替換。

當(dāng)我們認(rèn)為正在處理特定類或?qū)ο蟮膶嵗龝r,我們會看到這些錯誤,但實際上我們有Python內(nèi)置類型None。

顧名思義,None表示沒有值,例如當(dāng)函數(shù)調(diào)用返回意外結(jié)果或完全失敗時。

下面是一個從Python shell生成NoneType錯誤的示例:

在這里,我創(chuàng)建了一個名為foo的變量,并將其設(shè)置為None.

然后,我嘗試將foo的bar屬性設(shè)置為True,但由于foo是一個非類型對象,Python將不允許這樣做——因此會出現(xiàn)錯誤消息。

95%的OpenCV NoneType錯誤有兩個原因

案例?#1: CV2.imread

如果您收到NoneType錯誤,并且代碼正在調(diào)用CV2.imread,那么錯誤的可能原因是提供給CV2.imread的文件路徑無效。

如果為CV2.imread函數(shù)提供無效的文件路徑(即指向不存在的文件的路徑),它不會顯式拋出錯誤消息。相反,CV2.imread只返回None。

無論何時,只要您試圖訪問通過CV2從磁盤加載的無映像的屬性。我猜你會得到一個NoneType錯誤。

以下是嘗試從磁盤加載不存在的映像的示例:

如你所見,CV2.imread欣然接受圖像路徑(即使它不存在),意識到圖像路徑無效,并返回None。對于習(xí)慣于拋出異常的這類函數(shù)的Python程序員來說,這尤其令人困惑。

作為額外的好處,我還將提到AssertionFailed異常。

如果試圖將無效圖像(即非類型圖像)傳遞到另一個OpenCV函數(shù)中,Python+OpenCV會抱怨圖像沒有任何寬度、高度或深度信息——怎么可能呢,“圖像”畢竟是一個無對象!

下面是一個從磁盤加載不存在的映像并立即調(diào)用OpenCV函數(shù)時可能會看到的錯誤消息示例:

這些類型的錯誤可能更難調(diào)試,因為拋出AssertionError的原因很多。但在大多數(shù)情況下,第一步應(yīng)該是確保正確地從磁盤加載映像。

最后一個更罕見的CV2.imread問題是指您的映像確實存在于磁盤上,但您沒有在安裝了給定映像I/O庫的情況下編譯OpenCV。

例如,假設(shè)你有一個。磁盤上的JPEG文件,你知道你有正確的路徑。

然后嘗試通過CV2加載JPEG文件。我閱讀并注意到一個非類型或斷言錯誤。

這怎么可能?

文件存在!

在這種情況下,您可能忘記了在啟用JPEG文件支持的情況下編譯OpenCV。

在Debian/Ubuntu系統(tǒng)中,這是由于沒有安裝libjpeg造成的。

對于macOS系統(tǒng),您可能忘記了通過自制安裝jpeg庫。

為了解決這個問題,不管操作系統(tǒng)是什么,都需要重新編譯并重新安裝OpenCV。有關(guān)如何在特定系統(tǒng)上編譯和安裝OpenCV的更多詳細(xì)信息,請參閱本頁。

(“參閱本頁”的原網(wǎng)站:https://pyimagesearch.com/opencv-tutorials-resources-guides/?_ga=2.160503285.955629704.1643158794-1706104520.1639213599)

那么新文章的第一部分就寫完了

本文的原文鏈接:https://www.pyimagesearch.com/2016/12/26/opencv-resolving-nonetype-errors/

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

分享到微博請遵守國家法律
塘沽区| 高安市| 新安县| 渝中区| 仁化县| 儋州市| 沽源县| 镇康县| 无锡市| 和硕县| 阳高县| 江口县| 财经| 称多县| 五指山市| 桐乡市| 灵台县| 富宁县| 迁西县| 南城县| 平顶山市| 获嘉县| 昌平区| 河池市| 南溪县| 黄冈市| 塔城市| 洞头县| 宜兰市| 阿拉善右旗| 凌源市| 祁连县| 包头市| 井陉县| 南充市| 兰坪| 广平县| 拜城县| 沭阳县| 徐汇区| 田东县|