@wintreist

Как скопировать ROI из изображения при работе с OpenCV?

Здравствуйте, вот мой код:
img = cv2.imread('data\\Hunt.jpg', cv2.CAP_MODE_GRAY)
cv2.imshow('w', img)
ROI = []
Roi = 0

while (Roi != (0,0,0,0)):
    Roi = cv2.selectROI('w',img)
    os.system('cls')
    if Roi != (0,0,0,0):
        ROI.append(img[Roi[0]:Roi[1], Roi[2]:Roi[3]])
    pass
cv2.destroyAllWindows()

Видно, что при выделении ROI, в переменную Roi записываются четыре значения, первые два, видимо, координаты левого верхнего угла области, два последних, соответственно, правый нижний угол. Так как от исходного изображения мне нужны лишь ROI, оно, я так представляю, выступит как их содержатель, если так можно выразиться. Однако у меня не получается по координатам получить все пиксели этого черно-белого изображения. На офф.сайте OpenCV есть пример с использованием
img[280:340, 330: 390]
И тогда в присваиваемой переменной все нормально записывается, однако там в примере цветное изображение, возможно из-за этого в моем случае такое не работает, ибо присваивает так только пустой массив
5cfcbf0f204c2451065381.png
Так как меня интересует несколько областей ROI, то тут не подойдет единоразовая функция вырезания пикселей, если такая существует.
P.S: Пробовал использовать функцию cv2.copyMakeBorder() в которой дается исходное изображение и координаты, только там они обозначены как top,bottom,left,right, но при всех флагах этой функции, она лишь копировала все исходное изображение, которое выглядело теперь иначе
  • Вопрос задан
  • 394 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы