cv2 minAreaRect 中心旋转了 90 度?
cv2 minAreaRect center rotated by 90 degrees?
我不确定我是遇到了错误还是遗漏了什么(opencv 4.4.0.46 和 4.5.3.56,也许还有其他)。
我正在尝试查找此图像的旋转边界框:
这是结果:
代码如下:
import cv2
import numpy as np
base_image = cv2.imread("so_sample.png", 0)
thresh = cv2.threshold(base_image, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
coords = np.column_stack(np.where(thresh > 0))
rect = cv2.minAreaRect(coords)
print("RECT", rect)
box = np.int0(cv2.boxPoints(rect))
drawImg = cv2.cvtColor(thresh, cv2.COLOR_GRAY2BGR)
drawImg = cv2.copyMakeBorder(drawImg, 0, 100, 0, 100, cv2.BORDER_REPLICATE) # to see the whole box
cv2.drawContours(drawImg, [box], 0,(0,0,255), 2)
cv2.imshow("base_image", base_image)
cv2.imshow("thresh", thresh)
cv2.imshow("drawImg", drawImg)
cv2.waitKey(0)
此代码适用于“雷声”示例图像,它看起来像我能找到的所有示例代码。我错过了什么吗?谢谢
您正在使用 np.column_stack(np.where(thresh > 0))
查找轮廓。
OpenCV 使用 (x, y)
表示法,而 NumPy 使用 (row, col)
。
您可以通过打印 coords
.
来检查它
我建议尽可能使用 OpenCV 函数。
以下代码有效。
coords, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
rect = cv2.minAreaRect(np.vstack(coords))
我不确定我是遇到了错误还是遗漏了什么(opencv 4.4.0.46 和 4.5.3.56,也许还有其他)。
我正在尝试查找此图像的旋转边界框:
这是结果:
代码如下:
import cv2
import numpy as np
base_image = cv2.imread("so_sample.png", 0)
thresh = cv2.threshold(base_image, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
coords = np.column_stack(np.where(thresh > 0))
rect = cv2.minAreaRect(coords)
print("RECT", rect)
box = np.int0(cv2.boxPoints(rect))
drawImg = cv2.cvtColor(thresh, cv2.COLOR_GRAY2BGR)
drawImg = cv2.copyMakeBorder(drawImg, 0, 100, 0, 100, cv2.BORDER_REPLICATE) # to see the whole box
cv2.drawContours(drawImg, [box], 0,(0,0,255), 2)
cv2.imshow("base_image", base_image)
cv2.imshow("thresh", thresh)
cv2.imshow("drawImg", drawImg)
cv2.waitKey(0)
此代码适用于“雷声”示例图像,它看起来像我能找到的所有示例代码。我错过了什么吗?谢谢
您正在使用 np.column_stack(np.where(thresh > 0))
查找轮廓。
OpenCV 使用 (x, y)
表示法,而 NumPy 使用 (row, col)
。
您可以通过打印 coords
.
我建议尽可能使用 OpenCV 函数。 以下代码有效。
coords, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
rect = cv2.minAreaRect(np.vstack(coords))