OpenCV 与 Python 错误 - 二进制操作中断言失败 ((mask.type() == CV_8UC1 || mask.type() == CV_8SC1))

2024-04-07

我正在尝试在网络摄像头源上覆盖图像。这是代码的主要部分 -

# Load our overlay image: glasses.png
imgGlasses = cv2.imread('1.png')
     
# Create the mask for the glasses
imgGlassesGray = cv2.cvtColor(imgGlasses, cv2.COLOR_BGR2GRAY)
ret, orig_mask = cv2.threshold(imgGlasses, 10, 255, cv2.THRESH_BINARY)
 
# Create the inverted mask for the glasses
orig_mask_inv = cv2.bitwise_not(orig_mask)
 
# Convert glasses image to BGR
# and save the original image size (used later when re-sizing the image)
imgGlasses = imgGlasses[:,:,0:3]
origGlassesHeight, origGlassesWidth = imgGlasses.shape[:2]
    
video_capture = cv2.VideoCapture(0)

while True:
    # Capture frame-by-frame
    ret, frame = video_capture.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in faces:
        #cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
            roi_gray = gray[y:y+h, x:x+w]
            roi_color = frame[y:y+h, x:x+w]
            
            eyes = eye_cascade.detectMultiScale(roi_gray)
            for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
                
        for (ex, ey, ew, eh) in eyes:
            glassesWidth = 3*ew
            glassesHeight = glassesWidth * origGlassesHeight / origGlassesWidth
            
            # Center the glasses on the bottom of the nose
            x1 = ex - (glassesWidth/4)
            x2 = ex + ew + (glassesWidth/4)
            y1 = ey + eh - (glassesHeight/2)
            y2 = ey + eh + (glassesHeight/2)
                     
            # Re-calculate the width and height of the glasses image
            glassesWidth = x2 - x1
            glassesHeight = y2 - y1
         
            # Re-size the original image and the masks to the glasses sizes
            # calcualted above
            glasses = cv2.resize(imgGlasses, (glassesWidth,glassesHeight), interpolation = cv2.INTER_AREA)
            mask = cv2.resize(orig_mask, (glassesWidth,glassesHeight), interpolation = cv2.INTER_AREA)
            mask_inv = cv2.resize(orig_mask_inv, (glassesWidth,glassesHeight), interpolation = cv2.INTER_AREA)
         
            # take ROI for glasses from background equal to size of glasses image
            roi = roi_color[y1:y2, x1:x2]
         
                # roi_bg contains the original image only where the glasses is not
                # in the region that is the size of the glasses.
            roi_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)
         
                # roi_fg contains the image of the glasses only where the glasses is
            roi_fg = cv2.bitwise_and(glasses,glasses,mask = mask)
         
                # join the roi_bg and roi_fg
            dst = cv2.add(roi_bg,roi_fg)
         
                # place the joined image, saved to dst back over the original image
            roi_color[y1:y2, x1:x2] = dst
         
            break

我在尝试运行该程序时收到以下错误,但我不知道如何解决此问题 -

OpenCV 错误:断言失败 ((mask.type() == CV_8UC1 || mask.type() == CV_8SC1)) 在binary_op中,文件/home/user/opencv-2.4.10/modules/core/src/arithm.cpp,第1035行

回溯(最近一次调用最后一次):文件“main_eye.py”,第 86 行,位于

roi_bg = cv2.bitwise_and(roi,roi,mask = mask_inv) cv2.error: /home/user/opencv-2.4.10/modules/core/src/arithm.cpp:1035: 错误: (-215) (mask.type() == CV_8UC1 || mask.type() == CV_8SC1) 在函数中 二进制操作


您的蒙版是具有 3 个通道的图像,但它应该只有一个通道。您可以使用以下方法检查它mask.shape- 它将返回带有掩码尺寸的元组。问题就在这里:

imgGlassesGray = cv2.cvtColor(imgGlasses, cv2.COLOR_BGR2GRAY)
ret, orig_mask = cv2.threshold(imgGlasses, 10, 255, cv2.THRESH_BINARY)

您正在使用具有 3 个通道的图像创建蒙版,因此您的蒙版也将具有 3 个通道。使用单通道图像创建它(很可能您想使用 imgGlassesGray 而不是 imgGlasses) - 它应该可以解决您的问题。

imgGlassesGray = cv2.cvtColor(imgGlasses, cv2.COLOR_BGR2GRAY)
ret, orig_mask = cv2.threshold(imgGlassesGray, 10, 255, cv2.THRESH_BINARY)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV 与 Python 错误 - 二进制操作中断言失败 ((mask.type() == CV_8UC1 || mask.type() == CV_8SC1)) 的相关文章

  • 通过 boto3 承担 IAM 用户角色时访问被拒绝

    Issue 我有一个 IAM 用户和一个 IAM 角色 我正在尝试将 IAM 用户配置为有权使用 STS 承担 IAM 角色 我不确定为什么收到 访问被拒绝 错误 Details IAM 角色 arn aws iam 123456789 r
  • 为什么我的混淆矩阵只返回一个数字?

    我正在做二元分类 每当我的预测等于事实时 我发现sklearn metrics confusion matrix返回单个值 难道没有问题吗 from sklearn metrics import confusion matrix print
  • Tkinter 菜单删除项

    如何删除任何菜单项 例如我想删除 播放 self menubar Menu self root self root config menu self menubar self filemenu2 Menu self menubar self
  • ValueError:请使用“Layer”实例初始化“TimeDistributed”层

    我正在尝试构建一个可以在音频和视频样本上进行训练的模型 但出现此错误ValueError Please initialize TimeDistributed layer with a Layer instance You passed Te
  • 如何删除 PyCharm 中的项目?

    如果我关闭一个项目 然后删除该项目文件夹 则在 PyCharm 重新启动后 会再次创建一个空的项目文件夹 只需按顺序执行以下步骤即可 他们假设您当前在 PyCharm 窗口中打开了该项目 单击 文件 gt 关闭项目 关闭项目 在 PyCha
  • 如何在python中附加两个字节?

    说你有b x04 and b x00 你如何将它们组合起来b x0400 使用Python 3 gt gt gt a b x04 gt gt gt b b x00 gt gt gt a b b x04 x00
  • Python re无限执行

    我正在尝试执行这段代码 import re pattern r w w s re compiled re compile pattern results re compiled search COPRO HORIZON 2000 HOR p
  • 从 pyspark.sql 中的列表创建数据框

    我完全陷入了有线的境地 现在我有一个清单li li example data map lambda x get labeled prediction w x collect print li type li 输出就像 0 0 59 0 0
  • 如何获取numpy.random.choice的索引? - Python

    是否可以修改 numpy random choice 函数以使其返回所选元素的索引 基本上 我想创建一个列表并随机选择元素而不进行替换 import numpy as np gt gt gt a 1 4 1 3 3 2 1 4 gt gt
  • 如何将 sql 数据输出到 QCalendarWidget

    我希望能够在日历小部件上突出显示 SQL 数据库中的一天 就像启动程序时突出显示当前日期一样 在我的示例中 它是红色突出显示 我想要发生的是 当用户按下突出显示的日期时 数据库中日期旁边的文本将显示在日历下方的标签上 这是我使用 QT De
  • 在Python中读取tiff标签

    我正在尝试用 Python 读取 tiff 文件的标签 该文件是 RGB 的uint16每个通道的值 我目前正在使用tifffile import tifffile img tifffile imread file tif 然而 img是一
  • Python“非规范化”unicode 组合字符

    我正在寻找标准化 python 中的一些 unicode 文本 我想知道是否有一种简单的方法可以在 python 中获得组合 unicode 字符的 非规范化 形式 例如如果我有序列u o xaf i e latin small lette
  • 为什么在Python解释器中输入_会返回True? [复制]

    这个问题在这里已经有答案了 我的翻译行为非常奇怪 gt gt gt True gt gt gt type True
  • numpy:如何连接数组? (获得多个范围的并集)

    我使用Pythonnumpy 我有一个 numpy 索引数组a gt gt gt a array 5 7 12 18 20 29 gt gt gt type a
  • 使用 suds SOAP 库进行 HTTP 身份验证的奇怪行为

    我有一个正在运行的 python 程序 它使用 suds 通过 SOAP 获取大量数据 Web服务是通过分页功能实现的 这样我就可以抓取nnn每个 fetch 调用的行并获取下一个nnn与后续的电话 如果我使用如下代码向 HTTP 服务器进
  • 基于值而不是类型的单次调度

    我在 Django 上构建 SPA 并且有一个庞大的功能 其中包含许多功能if用于检查我的对象字段的状态名称的语句 像这样 if self state new do some logic if self state archive do s
  • PyInstaller“ValueError:源代码字符串不能包含空字节”

    我得到了一个ValueError source code string cannot contain null bytes执行命令时pyinstaller main py在具有和不具有管理员权限的cmd中 Traceback most re
  • 仅允许正小数

    在我的 Django 模型中 我创建了一个如下所示的小数字段 price models DecimalField u Price decimal places 2 max digits 12 显然 价格为负或零是没有意义的 有没有办法将小数
  • 非法指令:MacOS High Sierra 上有 4 条指令

    我正在尝试在 pygame 3 6 中制作一个看起来像聊天的窗口 我刚刚将我的 MacBook 更新到版本 10 13 6 在我这样做之前它工作得很好 但在我收到消息之后 非法指令 4 Code import pygame from pyg
  • 如何使用xlwt设置文本颜色

    我无法找到有关如何设置文本颜色的文档 在 xlwt 中如何完成以下操作 style xlwt XFStyle bold font xlwt Font font bold True style font font background col

随机推荐

  • ListView 的 EditItemTemplate 内的 AsyncFileUpload

    我在处理时遇到问题AsyncFileUpload控制在一个EditItemTemplate in a ListView 我如何引用AsyncFileUpload处理时控制OnUploadedComplete代码隐藏文件中的事件 我知道我可以
  • 电源查询循环

    我使用 Power Query 提取了过去一个月测试的所有独特项目类型 let Source Sql Database XXX YYY dbo tblTest Source Schema dbo Item tblTest Data Filt
  • OSX 中有类似 UIActivityViewController 的东西吗?

    我正在将应用程序从 iOS 迁移到 OSX OSX 中是否有与 UIActivityViewController 等效的东西 对于 Facebook Twitter 邮件 消息共享之类的东西 我需要做类似的事情 NSArray activi
  • FCM - 获取消息标签

    要从 FCM 后端发送消息 我们有以下视图 我想得到消息标签 消息诽谤 from RemoteMessage 当我调试该字段时 消息中的内容被标记为google c a c l 我认为这是一个内部字段 首先 我只是想知道和你的问题一样 但读
  • inputFormatter 应该只允许小数和负数

    我想允许用户只添加数字 12345 和十进制数字 如 21321 12312 和负数 如 23423 32432 用户不应该能够添加多个 比如 12 32 并在第一个输入中添加 比如 324 34 而不是324 4323 我用了这个正则表达
  • 如何重置 Azure 上的 Kudu 缓存部署

    我之前在 Azure Web App 上有一个 Node 应用程序 现在是一个 Go 应用程序 问题是当我部署时我从 Kudu 得到这个 Using cached version of deployment script command a
  • Android AdMob SDK - 请求新广告返回相同的广告

    我在主活动中有一个 AdView 其 requestInterval 设置为 推荐 20 秒 问题是广告似乎永远不会改变 我知道当我在 AdListener 上收到对 onReceiveRefreshedAd 的回调时 就会发生刷新 此外
  • Android 在我自己的应用程序中以编程方式隐藏鼠标指针

    我知道这里有一个类似的问题 以编程方式在 Android 屏幕上移动鼠标指针 https stackoverflow com questions 7695258 moving mouse pointer on android screen
  • Firebase - 缺少 Api 密钥

    我正在使用 Google 的 Firebase 数据库 我已经注册到 Firebase 控制台并下载了 JSON 文件 但由于某种原因它给了我这种错误 错误 任务 app processDebugGoogleServices 执行失败 缺少
  • apns Sharp 中的 iPhone 证书错误 对 SSPI 的调用失败

    我有一个托管在 azure 中的数据服务 我从该服务向 iphone 发送通知 但在与 apns 建立连接时出现以下错误 对 SSPI 的调用失败 收到的消息是意外的或格式错误 我还参考了以下链接来解决相同的错误 但仍然收到错误 苹果通过
  • Grails JSON 数组

    我正在将 Foo 对象列表转换为 JSON 字符串 我需要将 JSON 字符串解析回 Foos 列表 但是在下面的示例中 解析为我提供了 JSONObjects 列表而不是 Foos Example List list new Foo fi
  • Delphi TListBox OnClick / OnChange?

    使用 TListBox 获得 OnChange 类型的功能是否有技巧 我可以对组件进行子类化并添加属性等 然后仅在索引更改时执行 OnClick 代码 我还可以使用表单级别变量来破解它以存储当前索引 但只是想知道我是否忽略了之前明显的内容我
  • 如何反向应用隐藏?

    我在 git stash 中保存了一个小补丁 我已将其应用到我的工作副本中git stash apply 现在 我想通过反向应用补丁来取消这些更改 有点像git revert会做但反对藏匿 有谁知道如何做到这一点 澄清 我的工作副本还有其他
  • 用力触摸后选择菜单项时未调用选择器

    我有这段代码 用于响应用力触摸后点击的菜单项 class InterfaceController WKInterfaceController override init super init self addMenuItemWithItem
  • 如何更改 Bootstrap 的 typeahead 选择行为

    使用 Twitter Bootstrap 中的预输入功能时 example http twitter github com bootstrap javascript html typeahead 当我按 TAB 和按 ENTER 时 第一个
  • 使用 Angular.js 创建表

    我正在尝试使用 Angular js 创建一个表 该表的单元格跨越多行 Example http jsfiddle net famedriver kDrc6 http jsfiddle net famedriver kDrc6 示例数据 v
  • Python:清除日志文件

    我开发了一个客户端服务器应用程序并且我已经登录服务器 所以我使用logging模块 我想在服务器中创建一个命令来清除文件 我有测试os remove 但之后 日志不起作用 你有好主意吗 Thanks 截断文件而不是删除它可能会更好 最简单的
  • 如何在反应传单中使用带有动态标记的边界

    我有以下功能反应组件 它可以在 边界 框中正确显示两个静态标记 该框适合两个标记 我希望能够传递一系列纬度和经度值以供地图显示 但我不知道如何做到这一点 这是工作的静态示例 import React from react import Ma
  • 我们如何在 Perforce 中识别父分支?

    假设我有一个主要分支 项目 主 然后我从主分支创建了新分支 项目 1 0 然后我再次从 1 0 创建了分支 项目 2 0 现在 如果有人想知道2 0分支是从哪个分支创建的 用户如何识别呢 选择一个文件并使用 Perforce 修订图查看特定
  • OpenCV 与 Python 错误 - 二进制操作中断言失败 ((mask.type() == CV_8UC1 || mask.type() == CV_8SC1))

    我正在尝试在网络摄像头源上覆盖图像 这是代码的主要部分 Load our overlay image glasses png imgGlasses cv2 imread 1 png Create the mask for the glass