Skip to content

Commit e720f7e

Browse files
committed
update READMEs
1 parent 97f3da1 commit e720f7e

File tree

2 files changed

+62
-38
lines changed

2 files changed

+62
-38
lines changed

README.rst

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,48 +31,51 @@ Installation and Usage
3131

3232
1. If you have previous/other version of OpenCV installed (e.g. cv2 module in the root of Python's site-packages), remove it before installation to avoid conflicts.
3333
- To further avoid conflicts and to make development easier, Python's `virtual environments <https://docs.python.org/3/library/venv.html>`__ are highly recommended for development purposes.
34-
2. Install this package:
34+
35+
2. If you have an existing ``opencv-contrib-python`` installation, run ``pip uninstall opencv-contrib-python``
36+
37+
3. Install this package:
3538

3639
``pip install opencv-python``
3740

38-
3. Import the package:
41+
4. Import the package:
3942

4043
``import cv2``
4144

42-
4. Read `OpenCV documentation <http://docs.opencv.org/>`__
45+
5. Read `OpenCV documentation <http://docs.opencv.org/>`__
4346

44-
5. Before opening a new issue, read the FAQ below and have a look at the other issues which are already open.
47+
6. Before opening a new issue, read the FAQ below and have a look at the other issues which are already open.
4548

4649
Frequently Asked Questions
4750
--------------------------
4851

49-
Q: Do I need to install also OpenCV separately?
52+
**Q: Do I need to install also OpenCV separately?**
5053

5154
A: No, the packages are special wheel binary packages and they already contain statically built OpenCV binaries.
5255

53-
Q: Pip does not find package opencv-python?
56+
**Q: Pip does not find package ``opencv-python``?**
5457

5558
A: The wheel package format and manylinux builds are pretty new things. Most likely the issue is related to too old pip and can be fixed by running ``pip install --upgrade pip``.
5659

57-
Q: I need contrib modules?
60+
**Q: I need contrib modules?**
5861

5962
A: Please install `opencv-contrib-python <https://pypi.python.org/pypi/opencv-contrib-python>`__ instead. However, note that commercial usage might be restricted in some countries since the contrib modules contain some non-free/patented algorithms.
6063

61-
Q: Import fails on Windows to some DLL load error?
64+
**Q: Import fails on Windows to some DLL load error?**
6265

6366
A: If the import fails on Windows, make sure you have `Visual C++ redistributable 2015 <https://www.microsoft.com/en-us/download/details.aspx?id=48145>`__ installed. If you are using older Windows version than Windows 10 and latest system updates are not installed, `Universal C Runtime <https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows>`__ might be also required.
6467

65-
Q: I have some other import errors?
68+
**Q: I have some other import errors?**
6669

6770
A: Make sure you have removed old manual installations of OpenCV Python bindings (cv2.so or cv2.pyd in site-packages).
6871

69-
Q: Why I can't open video files on GNU/Linux distribution X or on macOS?
72+
**Q: Why I can't open video files on GNU/Linux distribution X or on macOS?**
7073

7174
A: OpenCV video I/O depends heavily on FFmpeg. Manylinux and macOS OpenCV binaries are not compiled against it.
7275
The purpose of these packages is to provide as easy as possible installation experience for OpenCV Python bindings and they should work directly out-of-the-box.
7376
Adding FFmpeg as an additional dependency without a "universal" FFmpeg build (e.g. LGPL licensed static build like in the Windows wheels) the goal is considerably harder to achieve. This might change in the future.
7477

75-
Q: Why I can't open GUI windows (``cv2.imshow()``) on GNU/Linux distribution X or on macOS?
78+
**Q: Why I can't open GUI windows (``cv2.imshow()``) on GNU/Linux distribution X or on macOS?**
7679

7780
A: Like above, OpenCV was not compiled against GTK or Carbon. Support for these might be added in the future.
7881

@@ -91,36 +94,46 @@ Build process
9194
-------------
9295

9396
The project is structured like a normal Python package with a standard
94-
``setup.py`` file. The build process is as follows (see for example
97+
``setup.py`` file. The build process for a single entry in the build matrices is as follows (see for example
9598
``appveyor.yml`` file):
9699

97100
1. Checkout repository and submodules
98101

99102
- OpenCV is included as submodule and the version is updated
100103
manually by maintainers when a new OpenCV release has been made
104+
- Contrib modules are also included as a submodule
101105

102106
2. Find OpenCV version from the sources
103-
3. Upgrade pip and install numpy for each Python version
107+
3. Install dependencies (numpy)
104108
4. Build OpenCV
105109

106110
- tests are disabled, otherwise build time increases too much
111+
- there are 2 build matrix entries for each build combination: with and without contrib modules
112+
- Linux builds run in manylinux Docker containers (CentOS 5)
107113

108114
5. Copy each ``.pyd/.so`` file to cv2 folder of this project and
109115
generate wheel
110-
6. Install the generated wheels for each Python version
111-
7. Test that the Python versions can import them
112-
8. Use twine to upload all wheels to PyPI
116+
117+
- Linux and macOS wheels are checked with auditwheel and delocate
118+
119+
6. Install the generated wheel
120+
7. Test that Python can import the library and run some sanity checks
121+
8. Use twine to upload the generated wheel to PyPI (only in release builds)
113122

114123
Currently the ``find_version.py`` file parses OpenCV version information
115124
from the OpenCV sources. OpenCV depends on numpy, so ``setup.py`` checks
116-
the numpy version also with the help of pip.
125+
the minimum required numpy version also with the help of pip.
117126

118-
The ``cv2.pyd`` file for example on Windows is normally copied to site-packages.
127+
The ``cv2.pyd`` file is normally copied to site-packages.
119128
To avoid polluting the root folder the ``__init__.py`` file in cv2 folder
120129
handles the import logic correctly by importing the actual ``.pyd`` module
121130
and replacing the imported cv2 package in ``sys.modudes`` with the
122131
cv2 module to retain backward compatibility.
123132

133+
Since both ``opencv-python`` and ``opencv-contrib-python`` use the same namespace explained above,
134+
it is highly recommended to uninstall the other package before switching from example from
135+
``opencv-python`` to ``opencv-contrib-python`` package.
136+
124137
Licensing
125138
---------
126139

README_CONTRIB.rst

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ OpenCV on Wheels
1111

1212
**Unofficial** OpenCV packages for Python with contrib modules.
1313

14-
**Usage of opencv-contrib-python might be restricted in some countries since the contrib package contains some patented algorithms/non-free modules.**
14+
**Note: the usage of opencv-contrib-python might be restricted in some countries since the contrib package contains some patented algorithms/non-free modules.**
1515

1616
If you are looking for a version without the contrib modules, please install `opencv-python <https://pypi.python.org/pypi/opencv-python>`__ instead.
1717

@@ -32,44 +32,45 @@ Installation and Usage
3232

3333
1. If you have previous/other version of OpenCV installed (e.g. cv2 module in the root of Python's site-packages), remove it before installation to avoid conflicts.
3434
- To further avoid conflicts and to make development easier, Python's `virtual environments <https://docs.python.org/3/library/venv.html>`__ are highly recommended for development purposes.
35-
2. Install this package:
35+
2. If you have an existing ``opencv-python`` installation, run ``pip uninstall opencv-python``
36+
3. Install this package:
3637

37-
``pip install opencv-python``
38+
``pip install opencv-contrib-python``
3839

39-
3. Import the package:
40+
4. Import the package:
4041

4142
``import cv2``
4243

43-
4. Read `OpenCV documentation <http://docs.opencv.org/>`__
44+
5. Read `OpenCV documentation <http://docs.opencv.org/>`__
4445

45-
5. Before opening a new issue, read the FAQ below and have a look at the other issues which are already open.
46+
6. Before opening a new issue, read the FAQ below and have a look at the other issues which are already open.
4647

4748
Frequently Asked Questions
4849
--------------------------
4950

50-
Q: Do I need to install also OpenCV separately?
51+
**Q: Do I need to install also OpenCV separately?**
5152

5253
A: No, the packages are special wheel binary packages and they already contain statically built OpenCV binaries.
5354

54-
Q: Pip does not find package opencv-contrib-python?
55+
**Q: Pip does not find package opencv-contrib-python?**
5556

5657
A: The wheel package format and manylinux builds are pretty new things. Most likely the issue is related to too old pip and can be fixed by running ``pip install --upgrade pip``.
5758

58-
Q: Import fails on Windows to some DLL load error?
59+
**Q: Import fails on Windows to some DLL load error?**
5960

6061
A: If the import fails on Windows, make sure you have `Visual C++ redistributable 2015 <https://www.microsoft.com/en-us/download/details.aspx?id=48145>`__ installed. If you are using older Windows version than Windows 10 and latest system updates are not installed, `Universal C Runtime <https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows>`__ might be also required.
6162

62-
Q: I have some other import errors?
63+
**Q: I have some other import errors?**
6364

6465
A: Make sure you have removed old manual installations of OpenCV Python bindings (cv2.so or cv2.pyd in site-packages).
6566

66-
Q: Why I can't open video files on GNU/Linux distribution X or on macOS?
67+
**Q: Why I can't open video files on GNU/Linux distribution X or on macOS?**
6768

68-
A: OpenCV video I/O depends heavily on FFmpeg. Manylinux and macOS OpenCV binaries are not compiled against it.
69+
A: OpenCV video I/O depends heavily on FFmpeg. Manylinux and macOS OpenCV binaries provided withing these packages are not compiled against it.
6970
The purpose of these packages is to provide as easy as possible installation experience for OpenCV Python bindings and they should work directly out-of-the-box.
7071
Adding FFmpeg as an additional dependency without a "universal" FFmpeg build (e.g. LGPL licensed static build like in the Windows wheels) the goal is considerably harder to achieve. This might change in the future.
7172

72-
Q: Why I can't open GUI windows (``cv2.imshow()``) on GNU/Linux distribution X or on macOS?
73+
**Q: Why I can't open GUI windows (``cv2.imshow()``) on GNU/Linux distribution X or on macOS?**
7374

7475
A: Like above, OpenCV was not compiled against GTK or Carbon. Support for these might be added in the future.
7576

@@ -88,36 +89,46 @@ Build process
8889
-------------
8990

9091
The project is structured like a normal Python package with a standard
91-
``setup.py`` file. The build process is as follows (see for example
92+
``setup.py`` file. The build process for a single entry in the build matrices is as follows (see for example
9293
``appveyor.yml`` file):
9394

9495
1. Checkout repository and submodules
9596

9697
- OpenCV is included as submodule and the version is updated
9798
manually by maintainers when a new OpenCV release has been made
99+
- Contrib modules are also included as a submodule
98100

99101
2. Find OpenCV version from the sources
100-
3. Upgrade pip and install numpy for each Python version
102+
3. Install dependencies (numpy)
101103
4. Build OpenCV
102104

103105
- tests are disabled, otherwise build time increases too much
106+
- there are 2 build matrix entries for each build combination: with and without contrib modules
107+
- Linux builds run in manylinux Docker containers (CentOS 5)
104108

105109
5. Copy each ``.pyd/.so`` file to cv2 folder of this project and
106110
generate wheel
107-
6. Install the generated wheels for each Python version
108-
7. Test that the Python versions can import them
109-
8. Use twine to upload all wheels to PyPI
111+
112+
- Linux and macOS wheels are checked with auditwheel and delocate
113+
114+
6. Install the generated wheel
115+
7. Test that python can import the library and run some sanity checks
116+
8. Use twine to upload the generated wheel to PyPI (only in release builds)
110117

111118
Currently the ``find_version.py`` file parses OpenCV version information
112119
from the OpenCV sources. OpenCV depends on numpy, so ``setup.py`` checks
113-
the numpy version also with the help of pip.
120+
the minimum required numpy version also with the help of pip.
114121

115-
The ``cv2.pyd`` file for example on Windows is normally copied to site-packages.
122+
The ``cv2.pyd`` file is normally copied to site-packages.
116123
To avoid polluting the root folder the ``__init__.py`` file in cv2 folder
117124
handles the import logic correctly by importing the actual ``.pyd`` module
118125
and replacing the imported cv2 package in ``sys.modudes`` with the
119126
cv2 module to retain backward compatibility.
120127

128+
Since both ``opencv-python`` and ``opencv-python-contrib`` use the same namespace explained above,
129+
it is highly recommended to uninstall the other package before switching from example from
130+
``opencv-python`` to ``opencv-python-contrib`` package.
131+
121132
Licensing
122133
---------
123134

0 commit comments

Comments
 (0)