opencv:在numpy数组上找到轮廓

Eha*_*awy 5 python opencv numpy opencv-contour

我试图在一个二进制图像中找到轮廓,这是一个 numpy 数组

a = np.array(np.random.rand(1024,768),dtype='float32')    
_, t2 = cv2.threshold(a,127,255,0)
im2, contours, hierarchy = cv2.findContours(t2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
Run Code Online (Sandbox Code Playgroud)

当我尝试运行该代码时,出现此错误

OpenCV Error: Unsupported format or combination of formats
([Start]FindContours supports only CV_8UC1 images when 
mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only)
in cvStartFindContours
Run Code Online (Sandbox Code Playgroud)

j.k*_*par 4

正如错误消息所述 - 当模式不是 时,支持的唯一格式CV_RETR_FLOODFILLCV_8UC1=> 单通道 8 位无符号整数矩阵。当模式为 时CV_RETR_FLOODFILL,唯一支持的格式是CV_32SC1- 32 位签名...

由于您传递的是 float32 数组,因此它是CV_32FC1- 32 位浮动的,不受支持。您必须使用整数数组。