簡體   English   中英

TypeError:“ key”是此函數的無效關鍵字參數

[英]TypeError: 'key' is an invalid keyword argument for this function

我正在嘗試使用opencv將圖像轉換為文本,但是代碼給出以下錯誤:

 contours.sort(key=lambda x: get_contour_precedence(x, img.shape[1])) TypeError: 'key' is an invalid keyword argument for this function error. 

有什么辦法可以解決? 這是代碼:

import cv2
import pytesseract
import numpy as np
import PIL.Image as Image


pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract- 
OCR\\tesseract'

def get_contour_precedence(contour, cols):
    tolerance_factor = 20
    origin = cv2.boundingRect(contour)
    return ((origin[0] // tolerance_factor) * tolerance_factor) * cols + 
    origin[1]


img = cv2.imread("C:/Users/Akshatha/Desktop/text_detection_from 
_image/images/news1.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, thresh = cv2.threshold(gray, 0, 255,cv2.THRESH_BINARY_INV + 
cv2.THRESH_OTSU)

kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(thresh, kernel, iterations=1)

dilation = cv2.dilate(thresh, kernel, iterations=3)
(contours, heirarchy,_) = cv2.findContours(dilation, cv2.RETR_EXTERNAL, 
cv2.CHAIN_APPROX_SIMPLE)
heirarchy = heirarchy[0]
print("start")
print(np.array(heirarchy).shape, np.array(contours).shape)
print("stop")
contours.sort(key=lambda x: get_contour_precedence(x, img.shape[1]))

# print(contours[0])
idx = 0
textlist = []
i = 0
rect_list = []
for c in contours:
  # get the bounding rect
  x, y, w, h = cv2.boundingRect(c)
  rect_list.append((x, y, x + w, y + h))
  # draw a green rectangle to visualize the bounding rect
  cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 0), 3)

  roi = img[y:y + h, x:x + w]
  text = pytesseract.image_to_string(roi, lang='eng', config='--oem 1 -- 
   psm 6 -c preserve_interword_spaces=1 ')
   print(text)
  cv2.putText(img, "#{}".format(i + 1), (x, y - 15), 
  cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 4)
   i += 1

cv2.namedWindow('Dilation', cv2.WINDOW_NORMAL)
cv2.imshow('Dilation', img)
cv2.waitKey(0)

您正在使用的sort()函數不接受key參數。 如果contours是可迭代的,則可以嘗試使用sorted()代替:

sorted(contours, key=lambda x:x)

請注意,這將返回一個列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM