Ошибка в коде Python стационарного вейвлет-преобразования

Я хочу выполнить следующую операцию в Python, чтобы обнаружить и удалить тени, как указано в прилагаемом документе.
(i) Преобразовать видеокадр из RGB в HSV
(ii) Разделить ВПГ на h,s,v
(iii) Найти разницу в h,s,v значении эталонного и текущего кадра
(iv) Применить стационарное вейвлет-преобразование (SWT) к разности s и v
(v) выполнить анализ перекоса на выходе вейвлета
(vi) присваивать значение пикселям на основе перекоса и вейвлет-вывода
(vii) Выполните пороговую операцию для удаления теней
(viii) Применение обратного SWT для восстановления изображения. Справочная бумага
Я написал скрипт Python и получил следующую ошибку при запуске команды SWT.

File "F:/Shoba/shadow_spinger.py", line 37,
  in <module> swts=pywt.swt(diffs,'db1',level=None,start_level=None)
File "C:\Users\pc13\Anaconda3\envs\pythonopencv\lib\site-packages‌​\pywt_swt.py", line 74,
  in swt ret = _swt_axis(data, wavelet, level, start_level, axis) 
File "pywt/_extensions/_swt.pyx", line 101,
  in pywt._extensions._swt.swt_axis (pywt_extensions_swt.c:5788) TypeError: an integer is required 

Мой код приведен ниже:

import numpy as np
import cv2
import pywt
from scipy.stats import skew
cap = cv2.VideoCapture('cam4v.mp4')

while(1):
    ret, frame = cap.read()
    hsvImg=cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    #cv2.imshow('hsvImg',hsvImg)
    h,s,v=cv2.split(hsvImg)
    diffh=cv2.absdiff(h[1],h[0]).astype(np.uint8)
    diffs=cv2.absdiff(s[1],s[0]).astype(np.uint8)
    diffv=cv2.absdiff(v[1],v[0]).astype(np.uint8)
    print("diffh: {0} ".format(diffh))
    print("diffs: {0} ".format(diffs))
    print("diffv: {0} ".format(diffv))

    swts=pywt.swt(diffs,'haar',level=None,start_level=None)
    swtv=pywt.swt(diffv,'haar',level=None,start_level=None)
    skews=skew(swts)
    skewv=skew(swtv)
    swtv[skewv>swtv] = 255
    swtv[skewv<swtv] = 0
    swts[(skewv>swtv) & (skews>swts)] = 255
    swts[(skewv<swtv) & (skews<swts)] = 0
    iswts=pywt.iswt(swts,'haar',level=None,start_level=None,axes=None)
    iswtv=pywt.iswt(swtv,'haar',level=None,start_level=None,axes=None)


    finalhsv=cv2.merge((h,iswts,iswtv))
    cv2.imshow('frame',finalhsv)
    if cv2.waitKey(10) == 27:                     # exit if Escape is hit
      break

cv2.waitKey(0)
cv2.destroyAllWindows()
cap.release()

Если вы чувствуете, что вопрос слишком простой, не понижайте его, так как я новичок в мире Python. Кроме того, предложите мне способы избавиться от этой ошибки, чтобы выполнить задачу удаления теней.
заранее спасибо

0 ответов

Другие вопросы по тегам