首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV python bitwise_and()错误皮肤分割

OpenCV python bitwise_and()错误皮肤分割
EN

Stack Overflow用户
提问于 2020-02-27 07:47:28
回答 2查看 433关注 0票数 0

大家好,我正在用OpenCv在Python上开发一个皮肤分割程序,代码如下:

代码语言:javascript
复制
import cv2 as cv
import numpy as np



cap = cv.VideoCapture(0)

while(1):
    _, frame = cap.read()
    hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)

    #Establece los intervalos de el color de piel
    low_skin = np.array([0,5,0])
    up_skin = np.array([65,165,165])

    #Guarda esa matriz en mask
    mask = cv.inRange(hsv, low_skin, up_skin)
    #cv.imshow('Segmentacion',mask)

    #Lleva los pixeles de 255 a 1 para multiplicarlo despues
    _,mask = cv.threshold(mask,127,255,cv.THRESH_BINARY)

    #Erosion del frame
    element_E = cv.getStructuringElement(cv.MORPH_ELLIPSE, (2*5 + 1, 2*5+1), (5, 5))
    Ero = cv.erode(mask, element_E)

    #Dilatacion de los elemntos previa erosion
    element_D = cv.getStructuringElement(cv.MORPH_ELLIPSE, (2*11 + 1, 2*11 + 1), (11, 11))
    dil = cv.dilate(Ero, element_D)

    #Multiplica ambas matrices
    res = cv.bitwise_and(frame,frame,mask=mask)

    cv.imshow('Actual',res)
    cv.imshow('Salida',frame)
    print('Mask')
    print( mask.shape )
    print( mask.dtype )
    print('Dil')
    print( dil.shape )
    print( dil.dtype )


    k = cv.waitKey(30)
    if k == ord('q') or k == 27:
        break

cv.destroyAllWindows()
cap.release()

问题是,当我尝试将bitwise_and函数与mask (我取自InRange)函数一起使用时,它可以工作,但我需要侵蚀和扩大该掩码,所以当所有操作都完成后,我尝试应用带有"dil“res = cv.bitwise_and(frame,frame,dil=dil)的bitwise_and函数,并显示下一个错误:

代码语言:javascript
复制
  File "<stdin>", line 32, in <module>
TypeError: 'dil' is an invalid keyword argument for bitwise_and()

dil和掩码数组显示了相同的大小和类型。

会出什么问题呢?谢谢你的回答

我在windows上工作

PD:我有原始框架和蒙版

当我使用这两个函数创建bitwise_and函数时,它提供了第三个函数:

但我需要对原始文件和最后一个文件(“dil”)执行此操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-27 08:02:37

代码语言:javascript
复制
res = cv.bitwise_and(frame,frame,mask=dil)

难到不是么?你能更好地解释一下你想用矩阵做什么吗?

Bitwise_and解释。

票数 0
EN

Stack Overflow用户

发布于 2020-02-27 08:25:24

bitwise_and takes 4 keyword arguments - source1、source2、目标图像和掩码。由于您通过名称- dil=dil指定了一个关键字参数,因此发生了TypeError。OpenCV不能识别这一点,因此你得到了TypeError。也许你想要res = cv.bitwise_and(frame, frame, mask=dil)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60424283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档