gpt4 book ai didi

python - Python 中的 OpenCV findContours

转载 作者:太空狗 更新时间:2023-10-29 19:28:36 32 4
gpt4 key购买 nike

我在 openCV 3.0 上使用 python 工作。为了找到最大的白色像素区域,首先将灰度图像阈值化为二值图像。

import cv2

import numpy as np

img = cv2.imread('graimage.png')

img = cv2.resize(img,(400,500))

gray = img.copy()

(thresh, im_bw) = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY )

derp,contours,hierarchy = cv2.findContours(im_bw,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

cnts = max(cnts, key=cv2.contourArea)

但是报错如下。

cv2.error: ..../opencv/modules/imgproc/src/contours.cpp:198: error: (-210) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function cvStartFindContours.

最佳答案

看起来这在评论中得到了回答,但只是为了将问题标记为已回答:

CV_8UC1表示8位像素,无符号,只有一个 channel ,所以灰度。看起来您正在使用 3 个颜色 channel 或 CV_8UC3 读取它。您可以通过打印 img.dtypeimg.shape 检查图像类型。 dtype应该是uint8,shape应该是(#,#),表示二维。我猜你会看到你的图像按原样打印形状 (#, #, 3),表示三个颜色 channel 。

正如 @user3515225 所说,您可以通过使用 cv2.imread('img.png', cv2.IMREAD_GRAYSCALE) 读取灰度图像来解决这个问题。不过,这假设您在其他任何地方都没有用到颜色。如果您想要图像的单独灰度 副本,请将 gray = img.copy() 替换为 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) 代替。

关于python - Python 中的 OpenCV findContours,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34716795/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com