[英]TypeError: an integer is required (got type tuple) <python> <OpenCV> <tesseract>
[英]Python TypeError: an integer is required (got type tuple) - (OpenCV / Numpy)
我知道周围有很多类似的问题,但这些问题似乎都不能解决我的问题。 这就是为什么我决定创建另一个帖子。
首先,以下代码的基本思想是检测特定坐标的像素值,以创建具有相同颜色的矩形。
这是我的代码:
# open image
img = cv2.imread("image.png")
# set coordinates for rectangle
start_point = (35, 39)
end_point = (50, 60)
# get pixel value of start point; outputs something like "[132 42 52]"
pixel = img[start_point].astype(int)
R = pixel[0]
G = pixel[1]
B = pixel[2]
# outputs type: "<class 'numpy.ndarray'> <class 'numpy.int32'> <class 'numpy.int32'> <class 'numpy.int32'>"
print(type(pixel), type(R), type(G), type(B))
# draws rectangle
color = (R, G, B)
image = cv2.rectangle(img, start_point, end_point, color, -1)
即使使用“astype(int)”将值“R”、“G”和“B”转换为整数,我也会收到以下错误:
image = cv2.rectangle(img, start_point, end_point, color, -1)
TypeError: an integer is required (got type tuple)
通过使用像 30、53、100 这样的数字作为颜色值,一切都很好。 通过设置此图像中坐标的像素值,我收到的值似乎有问题。 我真的不知道问题出在哪里,所以我感谢每一个帮助!
提前致谢。
你自己回答 - 你传递了类型numpy.int32
并且他们期望int
。 对于人类来说是一样的,但是 python 很难处理所有可以相互转换的类型。 你必须通过传递帮助他们:
image = cv2.rectangle(img, start_point, end_point, [int(x) for x in color], -1)
我认为最简单的解决方案是使用color = (int(R), int(G), int(B))
。
问题是,即使使用pixel = img[start_point].astype(int)
, pixel
的元素也是<class 'numpy.int32'>
类型而不是int
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.