Image.SURF() is documented but not implemented (and non-free in pip OpenCV builds)
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 62/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- opencv, python
- Domínio
- computer-vision, documentation, testing
Direção de pesquisa
Start in ImagePointFeatures.py by reading the existing BRISK/AKAZE pattern and _resolve_feature_create, then inspect tests/test_image_point_features.py::test_surf and the Image.SURF listing in docs/source/card-algorithms.rst. Done means either a conditionally tested SURF implementation with a clear non-free-build error and corrected docs, or removal of the unsupported API from both the docs and test.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Found 2026-10-03 while fixing #51.
docs/source/card-algorithms.rst lists Image.SURF alongside SIFT, BRISK and ORB, but there is no SURF method or SURFFeature class, and there never has been in this repo's git history (no SURF_create or def SURF in any commit). tests/test_image_point_features.py::test_surf called img.SURF() inside a bare try/except: pass, so the AttributeError was swallowed and the test passed without testing anything.
Constraint
SURF is patented/non-free. cv2.xfeatures2d.SURF_create exists in OpenCV 4.14 and 5.0 (opencv-contrib-python), but calling it raises error: (-213) because the pip wheels are not built with OPENCV_ENABLE_NONFREE. So an Image.SURF() would fail on every standard pip install unless OpenCV is built from source.
Fix
Add Image.SURF() and SURFFeature following the existing BRISK/AKAZE pattern in ImagePointFeatures.py (_resolve_feature_create, resolving via cv2.xfeatures2d), raising a clear error that explains the non-free requirement when the build can't provide it. Unskip test_surf conditionally on that availability, and fix the docs line. Alternative if SURF is judged out of scope: remove it from card-algorithms.rst and delete the test.
Related: #51
- Linguagem predominante
- Python
- Estrelas
- 223
- Forks
- 30
- Merge médio
- 1h 4min
- PRs com merge (30d)
- 9
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de petercorke/machinevision-toolbox-python
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 25/100
petercorke/machinevision-toolbox-python#125 ·
Mantenedores costumam responder em até 1 dia
-
tech-debt
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
petercorke/machinevision-toolbox-python#122 ·
Mantenedores costumam responder em até 1 dia
-
tech-debt
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
petercorke/machinevision-toolbox-python#119 ·
Mantenedores costumam responder em até 1 dia
-
tech-debt
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 30/100
petercorke/machinevision-toolbox-python#117 ·
Mantenedores costumam responder em até 1 dia
-
Remaining bare `except:` / swallowed exceptions in tests/ and src/ (Codacy + hidden failures)Abertatech-debt
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
petercorke/machinevision-toolbox-python#115 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de petercorke/machinevision-toolbox-python
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
rpm-software-management/mock#1824 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
jpata/particleflow#520 ·
Mantenedores costumam responder em até 1 dia
-
bug good first issue hacktoberfest
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
gridhead/gi-loadouts#699 ·
Mantenedores costumam responder em até 13 dias
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 86/100
FinanceFlash/unvibecode#206 ·
Mantenedores costumam responder em até 1 dia