Comments 24
А что вы думаете о tensorflow.image? Понимаю, что это вообще другой (ближе к продакшну и, возможно, уже легаси) мир, но всё же.
Я особо не пользовался данным модулем в своих проектах, так как в основном работал на PyTorch. Но могу сказать, что аналогично OpenCV в нём написано много оптимизированных алгоритмов на C++, которые даже можно запускать на GPU. Это несомненно, плюс. Но в ней всё-равно ограниченный функционал, и она, подобно torchvision, больше заточена на DL задачи, тогда как OpenCV охватывает широкий спектр задач. Так что рано или поздно придётся прибегнуть к OpenCV. К тому же, для использования tensorflow.image нужно устанавливать Tensorflow, с которым зачастую случаются траблы с зависимостями и который плохо поддерживается.
Отличная затея. Один только вопрос: кто и как будет поддерживать этот проект? Пока что это чистый инди-проект с одним разработчиком:
Но цели амбициозны, здесь явно нужна команда и активный комьюнити...
Какой смысл делать либу на либе? Это же придется каждый раз при обновлении cv2 переписывать cv3! Да и в общем зачем промежуточные слои если можно сразу написать свою реализацию cv2, исправив все недочёты? Или даже просто рефакторнуть все эти самые недочёты в оригинальной либе, в ней уже всё готово, и поддержка кода есть, и пользователи, все что надо для счастья!
А то понагородят своих решений, а потом приходишь, и экосистема - просто кладбище тысяч таких вот заброшенных либ, которые уже не запустить из-за обратной совместимости
В качестве mvp зайдёт, дальше, наверное, если будет спрос, можно будет переписать, обернув opencv без прослойки в виде cv2
cv2 хоть и написан на Python как интерфейс к OpenCV, но он не избавился от "плюсовости". Это делает его низкоуровневым, но зато обратно совместимым. Отсюда и вытекают недочёты интерфейса, озвученные в этой статье, для решения которых и была написана эта обёртка. Поэтому я почти уверен, что и через 10 лет интерфейсные моменты opencv-python не изменятся, и текущая версия cv3 будет актуальной.
Почему я решил не котрибьютить напрямую в opencv-python я также написал в статье.
Я пока не видел подобных библиотек. Это решение призвано сделать UI/UX использования OpenCV лучше. Выбор за вами: пользоваться ей или нет.
Поскольку лицензия проекта
license='GNU General Public License v3.0'
то сам же автор обязан открыто опубликовать весь код всех своих проектов, где он эту либу использует. Работодатели или заказчики будут в восторге, несомненно.
Библиотека крута!
Просьба сделать лицензию попроще, пока вы единственный разработчик, по возможности: MIT, BSD2, BSD3 или Apache
Это поможет увеличению использования вашего проекта.
Спасибо) По поводу лицензии: да, забыл везде обновить. Уже поправил
Так MIT или Apache? в вашем репозитории написано Apache, в соседнем комменте написано MIT.
Мне кажется странным, что примеры применения библиотеки у вас идут с самого начала статьи, а установка её в самом конце
Будем надеяться, что проект найдет поддержку. :) Однозначно это очень удобная обертка. Насколько ж адекватней выглядит такой код для получения списка случайных фреймов. Без всяких этих отдельных set, read:
# читабельно
cap = cv3.VideoCapture(project_video_path)
total_frames = cap.frame_cnt
frame_indices = random.sample(range(total_frames), 10)
frames = [cap[i] for i in frame_indices]
# ну или еще более компактно, если кому-то так нравится
cap = cv3.VideoCapture(project_video_path)
frames = [cap[i] for i in random.sample(range(cap.frame_cnt), 10)]
# а теперь сравните с этой манной кашей
cap = cv2.VideoCapture(project_video_path)
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
frame_indices = random.sample(range(total_frames), 10)
frames = []
for i in frame_indices:
cap.set(cv2.CAP_PROP_POS_FRAMES, i)
ret, frame = cap.read()
frames.append(frame)
Выглядит и правду приятно. Некоторые велосипеды и сам похожие изобрел для рутины, те же обертки для видео IO с состоянием. Вопрос знающим людям вспомнился: set и cv2.CAP_PROP_POS_FRAMES - похоже, не очень надежно работает, кто-нибудь сталкивался с таким? Прочитал, что OpenCV использует ffmpeg, а тот какие-то страшные хаки для перемотки, в итоге так и не смог заставить работать на убунте то, что работало в windows...
где брать shape_predictor_68_face_landmarks.dat
не сообщили. Надеюсь, я нашёл правильный, хоть и революционного 17го года
cv3 — делаем OpenCV питоничным