Я хочу найти тусклые края, используя Python.
Входные изображения (100 X 100):
Состоит из нескольких горизонтальных досок: верхней, средней, нижней.
Я хочу найтиограничивающий прямоугольник средней доски, такой как:
Я использовал несколько методов обнаружения краев (prewitt_x, sobel_x, cv2.findContours), но не могу хорошо определить.
Поскольку черная область края и области доски тусклая.
Как найти ограничивающую рамку, например красную рамку?
Приведенный ниже код является примером использования prewitt_x и cv2.findContours:
import cv2
import numpy as np
img = cv2.imread('my_dir/my_img.bmp',0)
# prewitts_x
kernelx = np.array([[1,1,1],[0,0,0],[-1,-1,-1]])
img_prewittx = cv2.filter2D(img, -1, kernelx)
img_prewittx_gray = cv2.cvtColor(img_prewittx, cv2.COLOR_BGR2GRAY)
cv2.imwrite('my_outdir/my_outimg.bmp',img_prewittx)
# cv2.findContours
image, contours, hierarchy = cv2.findContours(img_prewittx_gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
rects = [cv2.boundingRect(cnt) for cnt in contours]
print(rects)
На самом деле я не хочу использовать более медленный, например, детектор Canny.
Помогите мне:)