Попытка конвертировать Python в JavaScript opencv.js - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь разработать код javascript с использованием opencv.js, у меня есть код на python с тем же требованием, я преобразовал много строк, но некоторые из них очень трудно найти, пожалуйста, помогите.

последние 3строки из кода Python, которые не удалось найти для JavaScript opencv.js.

def find_marker(image):

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    gray = cv2.GaussianBlur(gray, (5, 5), 0)
    edged = cv2.Canny(gray, 35, 125)
    cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

    cnts = imutils.grab_contours(cnts) //these three line are unable to find for javascript.
    c = max(cnts, key = cv2.contourArea)
return cv2.minAreaRect(c)

1 Ответ

0 голосов
/ 04 июня 2019

В первой строке код использует функцию в пакете imutils python.Если вы видите метод grab_contours в файле imutils.convenience, расположенном по адресу https://github.com/jrosebr1/imutils/blob/master/imutils/convenience.py,, вы можете увидеть, как он реализован.Это очень просто реализовать как однострочник в js.

cnts = (cnts.length == 2) ? cnts[0] : (cnts.length == 3) ? cnts[1] : cnts

Во второй строке max - это встроенная функция python для итерации итерируемого и поиска максимума на основе ключа.Та же самая функциональность может быть достигнута в js следующим образом

c = cnts.reduce(function(max, cur) {
    // here key is the cv2.contourArea function,
    // we apply that on the cnts[i] and finds the cnts[i]
    // such that cv2.contourArea(cnts[i]) is maximum
    if(cv2.contourArea(max) < cv2.countourArea(cur)) {
        return cur
    } else {
        return max
    }
});

Теперь для третьей строки я предполагаю, что функция cv2.minAreaRect присутствует и в версии js.Я не уверен, хотя.Но надеюсь, что приведенный выше код работает для вас.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...