Здравствуйте, вот мой код:
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]
И тогда в присваиваемой переменной все нормально записывается, однако там в примере цветное изображение, возможно из-за этого в моем случае такое не работает, ибо присваивает так только пустой массив
Так как меня интересует несколько областей ROI, то тут не подойдет единоразовая функция вырезания пикселей, если такая существует.
P.S: Пробовал использовать функцию cv2.copyMakeBorder() в которой дается исходное изображение и координаты, только там они обозначены как top,bottom,left,right, но при всех флагах этой функции, она лишь копировала все исходное изображение, которое выглядело теперь иначе