簡體   English   中英

OpenCV 錯誤:(-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'CvtHelper'

[英]OpenCV Error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'CvtHelper'

Traceback (most recent call last):
File "demo.py", line 132, in 
     `result = find_strawberry(image)`
File "demo.py", line 63, in find_strawberry
`image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)`
cv2.error: OpenCV(3.4.2) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/color.hpp:253: error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'CvtHelper'

我個人在這個問題上花了很多時間,因此認為將其發布到 Stackoverflow 上是相關的。

問題取自: llSourcell/Object_Detection_demo_LIVE

甚至我也有同樣的問題,解決方案很簡單。 記住一件事,如果圖像的 RGB 值在 0-255 的范圍內,請確保這些值不是數據類型“float”。 因為 OpenCV 僅在值范圍為 0-1 時才考慮浮點數。 如果它發現一個大於 1 的浮點值,它會剪掉該值,認為浮點數只存在於 0-1 之間。 因此產生了這樣的錯誤。 因此,如果值為 0-255,則將數據類型轉換為 uint8。

image = image.astype('uint8')

檢查此Kaggle 內核以了解更多信息

以防萬一即使在應用上述修復程序后仍有人遇到相同的錯誤,請檢查圖像的深度,即檢查圖像是grayscale還是colored因為cv2.COLOR_BGR2GRAY無法轉換已經是grayscale圖像,因此會拋出這個錯誤。

好吧,我正在做對極幾何(找到下面的鏈接),我遇到了這個問題。 我通過執行以下兩種方法之一解決了此錯誤:

第一種方法- 保持原始顏色: A. 我通過從 cv2.imread 中刪除零參數來加載具有原始顏色(在我的情況下為 RGB)的圖像。

img1 = cv2.imread('image.jpg') 

B. 您可能需要編輯圖像的形狀,因為它是 RGB

r, c,_ = img1.shape 

C. 注釋轉換

# img1 = cv2.cvtColor(img1,cv2.COLOR_GRAY2BGR)

第二種方法- 轉換成灰度圖像: A. 我通過將零參數添加到 cv2.imread 來加載 BGR 中的圖像。

img1 = cv2.imread('image.jpg',0) 

B. 您可能需要編輯圖像的形狀,因為它是 BGR

r, c = img1.shape 

C. 現在可以將圖像轉換為灰度圖像

img1 = cv2.cvtColor(img1,cv2.COLOR_GRAY2BGR)

如果這兩種方法對您不起作用,您可能需要查看下面的鏈接,它們可能已經回答了您的問題:

https://github.com/aleju/imgaug/issues/157 https://github.com/llSourcell/Object_Detection_demo_LIVE/issues/6

對極幾何

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_calib3d/py_epipolar_geometry/py_epipolar_geometry.html

在 opencv 中使用 trackbar 時遇到相同的錯誤,但此方法解決了它:

img = np.full((512,512,3), 12, np.uint8)

其中img是您的圖像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM