TypeError: Expected Ptr cv::UMat for argument '%s'

1835 ワード

エラー:
TypeError: Expected Ptr<:umat> for argument '%s'
詳細なエラーは次のとおりです.
Traceback (most recent call last):
  File "D:/gitProject/ocr_screenRecognition/antiMissing/OperationTicket.py", line 119, in 
    longest_h_l = ot.line_detect(ot_image)
  File "D:/gitProject/ocr_screenRecognition/antiMissing/OperationTicket.py", line 22, in line_detect
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
TypeError: Expected Ptr<:umat> for argument '%s'

実は入力されたパラメータが間違っています.cv 2に伝わるイメージはnumpyである必要がある.arrayタイプですが、上の情報から分かるように、文字列タイプが入っているので、エラーを報告します.私がこのような間違いを犯したのは、私がcopyに書いた関数をクラスに、メンバー関数として、以下のようにします.
本来は次のようになります.
def line_detect(image, model=None):
    """
           
    :param image:
    :param model:
    :return:
    """
    if model != "v":
        model = "horizontal"
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # ...

copyからクラスへ:
class OperationTicket(object):
    def line_detect(image, model=None):
        """
               
        :param image:
        :param model:
        :return:
        """
        if model != "v":
            model = "horizontal"
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        # ...

pythonには独自の言語特性があり、上のクラスのimageはselfとされています.次のように変更すれば間違いはありません.
class OperationTicket(object):
    def line_detect(self, image, model=None):
        """
               
        :param image:
        :param model:
        :return:
        """
        if model != "v":
            model = "horizontal"
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        # ...