Я пытаюсь определить бумагу прямоугольной формы с синим цветом, используя opencv.js (javascript) - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь определить форму прямоугольника и цель синего цвета, но когда я пытаюсь запустить этот код, я получаю некоторую ошибку. Я пропустил какой-либо код, пожалуйста, направьте меня, я использую opencv.js (javascript).

Я попробовал это.

function findMarker(video){
    let gray = cv.cvtColor(video, cv.COLOR_RGBA2GRAY);
    let blur = cv.blur(gray, ksize, anchor, cv.BORDER_DEFAULT); // blur the image to avoids noise 
    let edges = cv.Canny(blur, 50, 100, 3, false); // black and white border 
    let cnts = cv.findContours(edges.copy(), cv.RETR_CCOMP, cv.CHAIN_APPROX_SIMPLE); 
    c = max(cnts, key = cv.contourArea);
    return cv.minAreaRect(c);
}

Код ошибки

BindingError {name: "BindingError", message: "Function 'cvtColor' called with an invalid number … arg0Wired, arg1Wired, arg2Wired, arg3Wired);↵})!", stack: "BindingError: Function 'cvtColor' called with an i…20OpenCV%20js/utils.js:68:13), <anonymous>:24:23)"}

Ответы [ 2 ]

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

Как говорится в сообщении об ошибке, вы вызываете cvtColor с неверными аргументами: вам нужно сначала передать функции исходный кадр, затем целевой мат, а затем код преобразования цвета

Попробуйте вот так

let src = cv.imread('canvasInput');
let dst = new cv.Mat();
cv.cvtColor(src, dst, cv.COLOR_RGBA2GRAY, 0);

здесь ссылка

редактировать: я также не совсем уверен насчет параметра функции: вы назвали его видео, из-за этого (и если вы передадитереальный поток видео) Я думаю, вам нужно извлечь кадры из видео перед преобразованием

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

Ваш вопрос содержит слишком мало полезной информации, и заголовок вводит в заблуждение.

У вас была ошибка при запуске функции. Попробуйте добавить больше описания, например, где вы это называете, что содержится в видео и какая полная ошибка.

Но, исходя из моего опыта, вы могли бы сначала начать отладку с

сначала, для каждого этапа, отобразите изображение для отладки, например, видео с серым размытым изображением. просто чтобы знать, где проблема.

Во-вторых, вход для преобразования функции должен быть текущим кадром или мат. Вы только что передали класс видео в функцию convert?

И последнее, но не менее важное: вы можете следить за реализацией других людей, например,

https://android.jlelse.eu/a-beginners-guide-to-setting-up-opencv-android-library-on-android-studio-19794e220f3c

попытайтесь узнать, как они используют mRBGA в разделе примеров связанного руководства. Я проверял это только сейчас, это работает. Поэтому я думаю, что вы можете учиться у них на правильном маршруте

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