Просто используйте функцию $ q.when ():
var items = ['one', 'two', 'three'];
var chain = $q.when();
items.forEach(function (el) {
chain = chain.then(foo(el));
});
return chain;
Примечание: foo должен быть фабрикой, например
function setTimeoutPromise(ms) {
var defer = $q.defer();
setTimeout(defer.resolve, ms);
return defer.promise;
}
function foo(item, ms) {
return function() {
return setTimeoutPromise(ms).then(function () {
console.log(item);
});
};
}
var items = ['one', 'two', 'three'];
var chain = $q.when();
items.forEach(function (el, i) {
chain = chain.then(foo(el, (items.length - i)*1000));
});
return chain;
Я только что проверил пример страницы, на которую вы ссылались:
Порог для оптимального значения, он может варьироваться в зависимости от изображения. img [dst> 0.01 * dst.max ()] = [0,0,255]
blockquote>Это страница документации, которую я действительно искал: https: //docs.opencv. org / 2.4 / modules / imgproc / doc / feature_detection.html? highlight = cornerharris # cornerharris
Углы на изображении можно найти как локальные максимумы этой карты ответов.
blockquote>Детектор cv2.cornerHarris возвращает найденные углы. Как обычно, этот метод не возвращает список найденных углов. Вместо этого он возвращает 2d-массив - того же размера, что и входные данные - с вероятностями. Каждая позиция в этом массиве сохраняет уверенность в том, что этот пиксель является углом (если быть точным, это не единственный пиксель, который, как прогнозируется, будет углом. Это окрестность, центрированная в этих координатах)
Поэтому, скорее всего, cv2.cornerHarris возвращает значение для уверенности в собственном прогнозе. А с помощью
dst>0.01*dst.max()
код фильтрует углы, которые являются только «углами с низкой достоверностью». Любой обнаруженный угол будет помечен как угол, если достоверность превышает 1% от максимальной достоверности.