我正在处理float32类型的128 x 128数组。这些阵列是从二进制文件中提取的,我正尝试在每个阵列中找到磁盘。
当我尝试使用HoughCircles示例代码时:
img = Image.fromarray(fa)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
我收到以下错误:
文件“”,第2行,在 cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
TypeError:src不是numpy数组,也不是标量
如果我不使用Image.fromarray转换为图像,则会收到以下错误消息,指示我仍无法使用正确的类型。
文件“”,第1行,在 circle = cv2.HoughCircles(fa,cv2.HOUGH_GRADIENT,1,20,param1 = 50,param2 = 30,minRadius = 0,maxRadius = 0)
错误:OpenCV(3.4.4) /用户/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/hough.cpp:1736: 错误:(-215:断言失败)!_image.empty()&& _image.type()== CV_8UC1 &&(_image.isMat()|| _image.isUMat()) “ HoughCircles”
答案 0 :(得分:0)
Houghcircles拍摄8位单通道灰度输入图像。并且您的数组是float32类型的128 x 128数组。因此,请尝试更改类型。
为了进行健全性检查,请在此操作之前和之后显示图像
img = Image.fromarray(fa)
答案 1 :(得分:0)
在您的情况下,您需要将图像转换为灰色:
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
如果您拥有64位图像,则可以使用以下方法将其转换为8位:
8_image = np.uint8(64_image)