Переход cv.GetSubRect на OpenCV 4 - PullRequest
0 голосов
/ 18 октября 2019

OpenCV раньше имел функцию GetSubRect, см., Например, https://docs.opencv.org/2.4/modules/core/doc/old_basic_structures.html

Итак, следующие строки там, где они действительны:

top = cv.GetSubRect(tmp, (0, 0, W, H/4))
left = cv.GetSubRect(tmp, (0, 0, W/4, H))
bottom = cv.GetSubRect(tmp, (0, H*3/4, W, H/4))
right = cv.GetSubRect(tmp, (W*3/4, 0, W/4, H))

whitenesses = []
whitenesses.append(cv.Sum(top)[2])
whitenesses.append(cv.Sum(left)[2])
whitenesses.append(cv.Sum(bottom)[2])
whitenesses.append(cv.Sum(right)[2])

Теперь OpenCV перешел и использует массив numpy во всем.

https://stackoverflow.com/a/58211775/1497139 пытается объяснить это, но не имеет голосов.

ROI = image[y1:y2, x1:x2]

Теперь будет новый подход. Но тогда должно быть возможно написать функцию GetSubRect, которая совместима со старым стилем таким образом.

Как будет выглядеть такая функция GetSubRect?

Почему в OpenCV больше нет такой функции, облегчающей миграцию?

1 Ответ

0 голосов
/ 18 октября 2019

Первая часть, на которую я мог ответить сейчас:

Код:

def getSubRect(self,image,rect):
    x,y,w,h = rect
    return image[y:y+h,x:x+h]

тест:

def test_getSubRect():
    image=cv2.imread("testMedia/chessBoard001.jpg",1)
    subImage=getSubRect(image,(0,0,200,200))
    iheight, iwidth, channels = subImage.shape
    assert iheight==200
    assert iwidth==200
    assert channels==3

код суммы

# get the intensity sum of a hsv image
def sumIntensity(self,image):
    h,s,v=cv2.split(image)
    height, width = image.shape[:2]
    sumResult=np.sum(v)
    return sumResult
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...