我工作在python在openCV 3.0.为了找到最大的白色像素区域,首先将阈值灰度图像转换为二值图像。
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。错误:/opencv/modules/imgproc/src/等高线。cpp:198:错误:(-210)[Start]FindContours在模式下仅支持CV_8UC1图像!=CV_RETR_FLOODFILL仅在函数cvStartFindContours中支持CV_32SC1图像。
这似乎在评论中得到了回答,但只是将问题标记为已回答:
CV_8UC1表示8位像素,无符号,只有一个通道,因此为灰度。看起来您正在使用3个颜色通道或CV_8UC3阅读它。您可以通过打印img来检查图像类型。数据类型
和img。形状
。数据类型应为uint8,形状应为(#,#),表示二维。我猜你会看到图形按原样为图像打印(#,#,3),表示三个颜色通道。
正如@user3515225所说,您可以通过使用cv2以灰度形式读取图像来修复这一问题。imread('img.png',cv2.imread\u灰度)
。不过,这假设您在其他任何地方都不使用颜色。如果需要图像的单独灰度副本,请替换gray=img。使用
gray=cv2复制()。CVT颜色(img、cv2.颜色\u rgb2灰色)
。
问题内容: 考虑以下代码片段: 我期望创建一个具有以下两个功能的字典: 但看起来生成的两个函数完全相同: 我真的不明白为什么。你有什么建议吗 ? 问题答案: 你需要为创建的每个函数绑定。一种方法是将其作为具有默认值的参数传递: 现在,函数内部的使用了参数,即使它具有相同的名称,并且在创建函数时会评估该参数的默认值。为了帮助你看到以下内容: 请记住默认值是如何工作的,例如可变对象(如列表和字典)的工
问题内容: OpenCV python包装器中是否有任何功能与OpenCV 2中Mat的convertTo方法具有相同的功能? 我基本上想在python中调用此函数 哪里是灰度图像。 我已经通过将dst参数保持为CV_32FC1类型来使用cv.ConvertScale,但是我正在尝试使python代码尽可能与cv2保持一致。有什么线索吗? 问题答案: 您可以为此简单地使用Numpy函数。 例如:
问题内容: 现在,我将elixir与mysql数据库一起使用,并将redispy与redis一起使用,并在所有位置选择UTF-8。我想用中文写一些数据,但是我得到的是这样的: 在我将该字典存储到redis并通过redispy将其取出后,它变为: 我知道如果我加入之前,并打印它会守我,但有一个功能或另一个解决这个问题? 问题答案: 后者看起来像json,请先尝试对其进行解码:
问题内容: 你好,我有两个python文件(命名管道) py 该管道创建一个命名管道“ test_pipe”,并将数据写入该管道。 b.py 我能够毫无问题地获取数据。但是我得到的数据是这种形式的(我已经用双引号括住了输出) 我无法弄清楚为什么所有这些变量都被打印(<,0,>)在a.py或b.py中的问题在哪里以及如何解决这个问题。 问题答案: 这就是回报。它返回结果和读取数据的元组。您应该验证结
我现在需要用python编写一个接收器程序,我想知道我做错了什么。在java中,我有(显然是代码片段): 它返回的值为: 如果我打印出数组字节文件大小,我会得到以下值: 这会返回: 我在python端接收这两个值(通过数据报发送给python接收器)。如何组合它们或将它们转换为值27762,就像Java中的BigInteger返回值一样?有点迷茫了。 任何想法都会很棒! 提前感谢!
断言是一种完整性检查,您可以在完成程序测试后打开或关闭。 想到断言的最简单方法是将它比作一个raise-if语句(或者更准确,即使是if-if-not语句)。 测试表达式,如果结果为false,则引发异常。 断言由assert语句执行,这是Python的最新关键字,在1.5版中引入。 程序员经常在函数的开头放置断言以检查有效输入,并在函数调用之后检查有效输出。 The assert 语句 遇到as
问题内容: 如果路径不存在,我正在尝试创建目录,但是!(不是)运算符不起作用。我不确定如何在Python中取反…执行此操作的正确方法是什么? 问题答案: Python中的求反运算符为。因此,只需将替换为即可。 对于您的示例,请执行以下操作: 对于您的特定示例(如Neil在评论中所述),您不必使用模块,只需使用即可获得所需的结果,并添加了异常处理优势。 例:
问题内容: 是否有可能使系统似乎已按下某个键,例如我需要使按键被按下数千次,而手动执行该操作很费时间,我想写点东西来做对我来说,我唯一了解的是Python。 更好的表达方式是,我需要模拟一个按键,IE无法捕获按键。 更多信息(按要求):我正在运行Windows XP,需要将密钥发送到另一个应用程序。 问题答案: 安装pywin32扩展。然后,您可以执行以下操作: 搜索WScript.Shell对象