Python3。当我深度复制__init__方法中具有cv2.VideoCapture的类的实例时,出现错误

时间:2019-03-21 12:00:40

标签: python python-3.x class opencv

这是我的代码。

mm.dd.yyyy

当我创建Video类的实例并尝试进行深度复制时,会出现此错误。

if (isNaN(StartDateEnfant.valueOf()) || isNaN(OData__EndDateEnfant.valueOf())) {
   StartDateEnfant = new Date(startDate.replace(/(\d{2})[- /.](\d{2})[- /.](\d+)/, "$2/$1/$3"));
   OData__EndDateEnfant = new Date(endDate.replace(/(\d{2})[- /.](\d{2})[- /.](\d+)/, "$2/$1/$3"));
} 

错误:

  

<< strong>主要。视频对象位于0x103496630>   追溯(最近一次通话):     在第28行的文件“ test.py”中       打印(深拷贝(视频))     深度复制中的文件“ /Users/tigranfahradyan/.local/share/virtualenvs/pyvideoproc-x3IHrdzn/lib/python3.7/copy.py”       y = _reconstruct(x,备忘录,* rv)     _reconstruct中的文件“ /Users/tigranfahradyan/.local/share/virtualenvs/pyvideoproc-x3IHrdzn/lib/python3.7/copy.py”,第280行       状态=深度复制(状态,备注)     在Deepcopy中的文件“ /Users/tigranfahradyan/.local/share/virtualenvs/pyvideoproc-x3IHrdzn/lib/python3.7/copy.py”,第150行       y =复印机(x,备忘)     _deepcopy_dict中的第240行,文件“ /Users/tigranfahradyan/.local/share/virtualenvs/pyvideoproc-x3IHrdzn/lib/python3.7/copy.py”       y [deepcopy(键,备忘录)] = deepcopy(值,备忘录​​)     深度复制中的文件“ /Users/tigranfahradyan/.local/share/virtualenvs/pyvideoproc-x3IHrdzn/lib/python3.7/copy.py”       rv =减速器(4)   TypeError:无法腌制cv2.VideoCapture对象

但是当我删除'cv2.VideoCapture(path)'时,一切正常。

import cv2
import numpy as np
from copy import deepcopy

class Video:

def __init__(self, path):

    self.name = path.split('/')[-1]
    self.cap = cv2.VideoCapture(path)

输出:

  

<< strong>主要。位于0x10d0f7c18的视频对象   << strong>主要。视频对象位于0x119693eb8>

1 个答案:

答案 0 :(得分:0)

我已经想出了解决方法,但是我确信这不是最好的方法。由于某些原因,当您尝试深复制具有设置为'cv2.VideoCapture(path_to_video)'的字段的类的实例时,它会产生错误。

但是您可以使用这样的局部变量。

import cv2

class Test:

    def __init__(self):
        cap = cv2.VideoCapture(path_to_video)

        """This will probably give an error for you 
           if you try to deepcopy the instance of this class"""
        # self.cap = cv2.VideoCapture(path_to_video)