Задать вопрос
@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, но при всех флагах этой функции, она лишь копировала все исходное изображение, которое выглядело теперь иначе
  • Вопрос задан
  • 433 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы