python - Python OpenCV TypeError:预期的Ptr对于参数“lowerb”和颜色问题
问题描述
免责声明:我是 OpenCv 的初学者,所以可能存在非常简单的错误所以我准备了一个代码来计算给定边界中的像素,然后将坐的计数保存在一个数组中,以便计算pcc 使用它们。
def PCCprepare():
print("[LOG] reporting!")
tot_pixel = 0
pixels = []
old_b = 0
old_g = 0
dir = os.listdir("res")
for filename in dir:
i = 0
img = cv2.imread("res/" + filename)
output = cv2.bitwise_and(img, img)
tot_pixel += output.size
for b in range(4):
for g in range(4):
for r in range(4):
lower = [b * 63.75, g * 63.75, r * 63.75]
print(lower)
if b > old_b:
upper = ([(b + 1) * 63.75, g * 63.75, r * 63.75])
elif g > old_g:
upper = ([b * 63.75, (g + 1) * 63.75, r * 63.75])
else:
upper = ([b * 63.75, g * 63.75, (r + 1) * 63.75])
print(upper)
old_g = g
old_b = b
mask = cv2.inRange(img, lower, upper)
output = cv2.bitwise_and(img, img, mask=mask)
try:
pixels[i] += np.count_nonzero(output)
except:
pixels.append(np.count_nonzero(output))
i += 1
它曾经适用于固定边界,但就目前而言,它总是返回以下异常:
Ignoring exception in command imgSetup:
Traceback (most recent call last):
File "C:\Users\user\Downloads\Mash_The_CharacterCreator\venv\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "C:/Users/user/Downloads/Mash_The_CharacterCreator/bot.py", line 727, in waifuSet
await ctx.send("<@!" + str(ctx.message.author.id) + "> " + imgWorks.PCCprepare())
File "C:\Users\user\Downloads\Mash_The_CharacterCreator\WaifuMeterPNG.py", line 53, in PCCprepare
mask = cv2.inRange(img, lower, upper)
TypeError: Expected Ptr<cv::UMat> for argument 'lowerb'
另外,如果有人可以帮助我解决边界问题,因为我想计算所有可能的颜色,而以前我像这样使用过
lower = [b * 63.75, g * 63.75, r * 63.75]
print(lower)
upper = [(b + 1) * 63.75, (g + 1) * 63.75, (r + 1) * 63.75]
print(upper)
但它会导致重叠和不准确的界限,所以如果有人更熟悉这个主题会为他们提出一些更好的解决方案,我会很高兴
解决方案
在 Python 中,函数的lowerb
andupperb
参数cv2.inRange(src, lowerb, upperb, dst)
不接受列表,它只支持元组。因此,不要使用括号,只需将它们更改为括号:
lower = (b * 63.75, g * 63.75, r * 63.75)
我已经用我机器上的更新lower
和upper
变量测试了你的代码,它可以工作。
推荐阅读
- javascript - 检查页面的页面可见性和页面焦点
- javascript - 更改菜单项的语言
- jquery - 延迟第二次点击,直到 animate.css 完成动画
- git - 如何在不打开编辑器的情况下进行 git commit 以实现自动化目的
- amazon-web-services - 有什么方法可以知道离线保存的数据是否已经在线同步?
- java - Docker OpenJDK -Xmx 或
- c - 使用范围外声明
- python-3.x - HDFStore 初始化错误:名称未定义
- css - RWD 和智能手机的屏幕 x 浏览器窗口大小
- python - Python 字典迭代:d 与 d.viewkeys()