不確定我做錯了什么,但我無法讓 HoughCircles 在函式內部運行......
import cv2
import numpy as np
def test(image):
circles = cv2.HoughCircles(image, cv2.HOUGH_GRADIENT, 4, 70, minRadius=70, maxRadius=74)
if circles is not None:
circles = np.uint16(np.around(circles))
for x, y, r in circles:
cv2.circle(image, (x, y), r, [0, 0, 255], 2)
return image
img = cv2.imread('initial_frame.png')
image2 = test(img)
cv2.imshow('test', image2)
cv2.waitKey(0)
cv2.destroyAllWindows()
這導致...
circles = cv2.HoughCircles(image, cv2.HOUGH_GRADIENT, 4, 70, minRadius=70, maxRadius=74)
cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-1i5nllza\opencv\modules\imgproc\src\hough.cpp:2253: error: (-215:Assertion failed) !_image.empty() && _image.type() == CV_8UC1 && (_image.isMat() || _image.isUMat()) in function 'cv::HoughCircles'
如果我洗掉對 的呼叫HoughCircles,image2則按要求顯示。
uj5u.com熱心網友回復:
關于解釋錯誤。它來自hough.cpp#L1659:
CV_Assert(!_image.empty() && _image.type() == CV_8UC1 && (_image.isMat() || _image.isUMat()));
分解它,以下所有條件都必須為真:
!_image.empty(): 輸入影像不應為空;_image.type() == CV_8UC1: 輸入影像必須是8U(8-bit unsigned,np.uint8) 和C1(single-channel);_image.isMat() || _image.isUMat(): 檢查輸入是否為MatorUMat(在 Python 中,它必須是一個 numpy 陣列);
影響您的問題是您只能呼叫cv2.HoughCircles()單通道(灰度)影像,您的影像有 3 個通道。將您的影像轉換為灰度,然后重試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/317476.html
