(-210: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 function 'cvstartfindcontours_impl'
时间: 2023-05-31 17:19:58 浏览: 2411
### 回答1:
这是一个OpenCV的错误提示,意思是当使用cv_retr_floodfill模式时,findcontours函数只支持cv_32sc1格式的图像,而在其他模式下只支持cv_8uc1格式的图像。可能是因为你传入的图像格式不符合要求导致的。建议检查一下代码中的图像格式和模式设置是否正确。
### 回答2:
这个错误提示指出了在进行轮廓查找时出现的错误,具体为图像格式不受支持。在使用OpenCV对图像进行轮廓查找时,需要注意图像的格式。OpenCV支持以下图像类型:cv_8uc1、cv_8uc3、cv_16uc1、cv_16uc3、cv_32sc1、cv_32sc3、cv_32fc1和cv_32fc3。其中,cv_8uc1表示8位无符号单通道灰度图像,常用于二值化后的图像;cv_8uc3表示8位无符号三通道图像,常用于彩色图像;cv_16uc1和cv_16uc3表示16位无符号单通道和三通道图像,cv_32sc1和cv32sc3表示32位有符号单通道和三通道图像,cv_32fc1和cv_32fc3表示32位浮点单通道和三通道图像。
在进行轮廓查找时,根据具体需求选用不同的模式,其模式常用的有cv_retr_external、cv_retr_list、cv_retr_ccomp和cv_retr_tree。其中,cv_retr_external表示只提取最外层轮廓,cv_retr_list表示提取所有轮廓并放在链表中,cv_retr_ccomp表示提取所有轮廓并将其组成两层层次结构,cv_retr_tree表示提取所有轮廓并将其组成多层层次结构。而cv_retr_floodfill模式可以提取图像中不连续的轮廓,但是在使用该模式时,图像的格式只能为cv_32sc1。
因此,当出现(-210: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 function 'cvstartfindcontours_impl'这个错误提示时,需要检查图像的格式和轮廓查找模式是否匹配。如果使用了cv_retr_floodfill模式,则需要将图像的格式转换为cv_32sc1格式。如果使用其他模式,则需要将图像的格式转换为cv_8uc1、cv_8uc3、cv_16uc1、cv_16uc3、cv_32sc1、cv_32sc3、cv_32fc1或cv_32fc3格式。
### 回答3:
这个错误信息是因为OpenCV库中的函数findContours()不支持指定的图像格式或图像格式组合。findContours()是在图像处理中常用的函数,可以用于从二值化图像中提取轮廓信息,并返回一组轮廓点集。如果在调用findContours()时传入的图像格式不符合要求,就会出现这个错误信息。
具体来说,当mode参数不等于cv_retr_floodfill时,findContours()只支持8位单通道灰度图像(cv_8uc1)格式的图像。而当mode参数等于cv_retr_floodfill时,findContours()只支持32位单通道整型图像(cv_32sc1)格式的图像。
如果遇到了这个错误信息,我们可以检查一下代码中传入findContours()函数的图像格式是否符合上述要求。如果不符合,可以对图像进行格式转换,再进行轮廓提取。
总的来说,这个错误信息提示了OpenCV库中函数的限制和使用要求,我们需要注意调用函数时参数的类型和格式,确保使用正确的参数进行调用,从而避免出现这种错误。