Provided by: opendrop_3.3.2-3_amd64 bug

NAME

       opendrop - OpenDrop

RELEASE BUILDS

       Stand-alone  builds  for  Windows  are  provided  for  certain  major  releases  and  do  not require the
       installation of additional software: <https://github.com/jdber1/opendrop/releases/>.

       Releases for Linux and macOS don't exist yet and  OpenDrop  should  instead  be  installed  as  a  Python
       package. See next section.

BUILDING PACKAGE FROM SOURCE

       OpenDrop  requires  Python  3.6  or  higher, the GTK 3 library, OpenCV Python bindings, and the following
       build dependencies:

          • Boost.Math

          • SUNDIALS ARKODE

       Other required Python packages will be automatically installed by pip.

       Platform specific build instructions follow.

   Ubuntu
       1. Install OpenCV.

          • If on Ubuntu 17.10 (or later):

                sudo apt install python3-opencv

          • Alternatively there is an unofficial opencv-python <https://pypi.org/project/opencv-python/> package
            that can be installed using pip:

                pip3 install opencv-python

       2. Install SUNDIALS. Unfortunately libsundials-dev from the Ubuntu repositories are too old,  we  require
          at least version 4.0.0 and above. Here are brief instructions for installing SUNDIALS from source.

          1. Download  the  latest version from the releases page <https://computing.llnl.gov/projects/sundials/
             sundials-software>. (Note: the latest version requires a CMake  version  newer  than  available  in
             Ubuntu < 20.04. If this affects you, try an older version of SUNDIALS like 4.0.0 instead.)

          2. Extract and change into the source directory, e.g.:

                tar -xvf sundials-5.7.0.tar.gz
                cd sundials-5.7.0/

          3. Create a build directory:

                mkdir build
                cd build/

          4. Configure,  build,  and  install (make sure cmake and build-essential are installed from the Ubuntu
             repos):

                cmake \
                  -DEXAMPLES_INSTALL=OFF \
                  -DBUILD_ARKODE=ON \
                  -DBUILD_CVODE=OFF \
                  -DBUILD_CVODES=OFF \
                  -DBUILD_IDA=OFF \
                  -DBUILD_IDAS=OFF \
                  -DBUILD_KINSOL=OFF \
                  -DBUILD_STATIC_LIBS=OFF \
                  -DCMAKE_BUILD_TYPE=Release \
                  ..
                make
                sudo make install

       3. Install Boost.Math. If on Ubuntu 20.04 or newer, run:

             sudo apt install libboost-dev

          The libboost-dev package on older versions of Ubuntu is not recent enough and Boost will  need  to  be
          installed from source. We need at least Boost 1.71.0.

       4. Follow  the installation instructions here <https://pygobject.readthedocs.io/en/latest/getting_started
          .html#ubuntu-logo-ubuntu-debian-logo-debian> for installing PyGObject and GTK.

       5. Use pip to install OpenDrop from the repo:

             pip3 install git+https://github.com/jdber1/opendrop.git

          Run pip3 uninstall opendrop to uninstall.

       6. Run python3 -m opendrop to launch the app.

   Fedora
       Tested on Fedora 35.

       1. Install Python, pip, and OpenCV:

             sudo dnf install python3-devel python3-opencv python3-pip

       2. Install glib:

             sudo dnf install glib2-devel

       3. Install SUNDIALS:

             sudo dnf install sundials-devel

       4. Install Boost:

             sudo dnf install boost-devel

       5. Use pip to install OpenDrop from the repo:

             pip install git+https://github.com/jdber1/opendrop.git

          Run pip uninstall opendrop to uninstall.

       6. Run python -m opendrop to launch the app.

   macOS
       1. Install the latest version of Python 3 and pip. You can do so using a third-party package manager like
          MacPorts <https://www.macports.org/> or Homebrew <https://brew.sh/>.

       2.

          • Install the unofficial opencv-python <https://pypi.org/project/opencv-python/> package by running:

                pip install opencv-python

             (Make sure pip refers to your Python 3's pip installation.)

          • Alternatively, OpenCV and its python bindings can  also  be  installed  using  the  opencv  Homebrew
            formula <https://formulae.brew.sh/formula/opencv> or opencv MacPorts port <https://www.macports.org/
            ports.php?by=library&substr=opencv>.

       3.

          • If Homebrew was used to install Python 3, PyGObject and GTK can also be installed by running:

                brew install pygobject3 gtk+3

          • or if MacPorts was used, run:

                sudo port install py36-gobject3 gtk3

             (Instead of the py36- prefix, use py37- or py38- if Python 3.7/3.8 is the version installed.)

       4. Install Boost.Math and SUNDIALS. (todo: Add MacPorts and Homebrew example).

       4. Use pip to install OpenDrop from the repo:

             pip install git+https://github.com/jdber1/opendrop.git

          Run pip uninstall opendrop to uninstall.

       5. Run python3 -m opendrop to launch the app.

   Windows
       Installing  OpenDrop  as  a Python package is possible on Windows using platforms like MSYS2 or Anaconda.
       The process is not very straightforward so your mileage may vary.  (todo: This page is out  of  date  and
       should be updated.)

       When OpenDrop is launched, the Main Menu window will first appear.  [image: Main Menu window] [image]

       Click  on  either  of the 'Interfacial Tension' or 'Contact Angle' buttons to begin a new analysis of the
       respective type.

INTERFACIAL TENSION

       A wizard-style window will guide you through the process of performing an interfacial tension analysis.

   Image acquisition
       First, choose an image input method. OpenDrop currently supports opening images from the local filesystem
       or capturing images with a USB camera.

   Local filesystem
       [image: IFT Image acquisition, local filesystem] [image]

       Click on 'Choose files' to open the file chooser dialog and select an individual image or a  sequence  of
       images.  When  analysing  a sequence of images, 'Frame interval' refers to the time interval (in seconds)
       between each image. Sequences of images are ordered in lexicographic order.

   USB camera
       [image: IFT Image acquisition, USB camera] [image]

       Click on 'Connect camera' to open the camera chooser dialog.  [image: IFT Image acquisition,  USB  camera
       chooser dialog] [image]

       OpenDrop uses OpenCV to capture images from a connected camera. 'Camera index' refers to the device index
       argument  passed  to  the OpenCV function cv2.VideoCapture(). An index of 0 refers to the first connected
       camera (usually a laptop's in-built webcam if present), an index of 1 refers to the second camera, and so
       on. Currently, there does not appear to be a way in OpenCV to query a list of valid  device  indices  and
       associated device names, so in a multi-camera setup, some trial-and-error is required.

       'Frame interval' refers to the time interval (in seconds) between capturing images.

   Physical parameters
       [image: IFT Physical parameters] [image]

       'Inner density' refers to the density of the drop.

       'Outer density' refers to the density of the surrounding medium.

       'Needle diameter' refers to the diameter of the needle the drop is suspended from.

       'Gravity' refers to the gravitational acceleration.

   Image processing
       [image: IFT Image processing] [image]

       The  image  processing  window requires you to define the 'drop region' and 'needle region' of the image.
       Click on the 'Drop region' or 'Needle region' buttons in the 'Tools' panel,  then  drag  over  the  image
       preview to define the associated region.  [image: IFT Image processing, regions defined] [image]

       Once  each  region  is  defined, a blue outline will be drawn over the preview showing the drop or needle
       profile that has been extracted.

       OpenDrop uses OpenCV's Canny edge detector to detect edges in the image, click on  the  'Edge  detection'
       button  in  the  'Tools' panel to open a dialog bubble which will allow you to adjust the lower and upper
       threshold parameters of the Canny edge detector. Thin blue lines are  drawn  over  the  preview  to  show
       detected edges.

       The  extracted  needle  profile  is  used to determine the diameter in pixels of the needle in the image.
       Along with the needle diameter in millimetres given in the 'Physical parameters' page, a metres-per-pixel
       scale can be determined, which is then used to derive other physical properties of  the  drop  after  the
       image is analysed.

       Click on 'Start analysis' to begin analysing the input images, or begin capturing and analysing images if
       using a camera.

   Results
       [image: IFT Results] [image]

       The  results  page  shows  the current status of the analysis. Data shown in the window is updated as the
       analysis progresses.

       There are two main views, the 'Individual Fit' view and the 'Graphs'  view.  The  'Graphs'  view  is  not
       available when analysing a single image.

   Individual Fit
       The  'Individual  Fit' view shows analysis details for an individual image. Pick an analysis in the lower
       panel to preview its details in the upper panel.

       The 'Drop profile' tab on the right of the upper panel shows the fitted drop profile (drawn  in  magenta)
       over the extracted drop profile (drawn in blue).  [image: IFT Results, drop profile] [image]

       The  'Fit  residuals'  tab  shows  a  plot of the fit residuals. The horizontal axis is the 'drop profile
       parameter', ranging from 0 to 1, with 0 corresponding to  one  end  of  the  drop  edge  outline,  and  1
       corresponding to the other end. The vertical axis is some dimensionless quantity indicating the deviation
       of the extracted profile from the fitted profile.  [image: IFT Results, fit residuals] [image]

       The 'Log' tab shows the history of any messages logged by the fitting routine.  [image: IFT Results, log]
       [image]

   Graphs
       [image: IFT Results, graphs] [image]

       The 'Graphs' view shows plots of interfacial tension, volume, and surface area over time.

   Cancel or discard analysis
       You may cancel an in progress analysis by clicking on the 'Cancel' button in the footer (not shown in the
       screenshots  above).  To  discard the results of a finished analysis, click the 'Back' button, which will
       return you to the 'Image processing' page, or close the window to return to the Main Menu.

   Saving
       [image: IFT Save dialog] [image]

       Once an analysis is finished, click on the 'Save' button in the footer to open the save dialog. All  data
       will  be saved in a folder with name determined by the 'Name' entry, and in a parent directory determined
       by the 'Parent' selection.

       As a convenience, you may choose to save some pre-made plots.  [image: IFT Example save output] [image]

       An example save output is shown above, and screenshots of the contents of some files are shown below.
         [image: IFT timeline.csv screenshot] [image] timeline.csv.UNINDENT
         [image: IFT profile_fit.csv screenshot] [image] water_in_air1/profile_fit.csv (each row is  an  (x,  y)
         coordinate pair).UNINDENT
         [image:  IFT profile_extracted.csv screenshot] [image] water_in_air1/profile_extracted.csv (each row is
         an (x, y) coordinate pair).UNINDENT
         [image:  IFT  profile_fit_residuals.csv  screenshot]  [image]   water_in_air1/profile_fit_residuals.csv
         (first column is 'drop profile parameter', second column is residual).UNINDENT
         [image: IFT params.ini screenshot] [image] water_in_air1/params.ini.UNINDENT

CONTACT ANGLE

       A wizard-style window will guide you through the process of performing a contact angle analysis.

   Image acquisition
       The contact angle image acquisition page is the same as the one for interfacial tension analyses.

   Image processing
       [image: Contact Angle Image processing] [image]

       The  image  processing  window  requires you to define the 'drop region' and 'surface line' of the image.
       Click on the 'Drop region' button in the 'Tools' panel then drag over the image  preview  to  define  the
       region. Similarly, click on the 'Surface line' button and drag a line to define the surface that the drop
       is  sitting  on.  With  the 'Surface line' button depressed and the preview widget focused, use the arrow
       keys for finer adjustments of the surface line.  [image: Contact Angle Image processing, regions defined]
       [image]

       Once the drop region is defined, a blue outline will be drawn over the preview showing the  drop  profile
       that has been extracted.

       The intersection angle between the drop profile and the surface line will be the contact angle measured.

       In  a  contact  angle  analysis,  OpenDrop  uses  image  thresholding to separate the foreground from the
       background. Click on the 'Foreground detection' button to open a dialog bubble which will  allow  you  to
       adjust  the  threshold  value.  A  blue  overlay  is  painted over parts of the image deemed to be in the
       foreground.

       Click on 'Start analysis' to begin analysing the input images, or begin capturing and analysing images if
       using a camera.

   Results
       [image: Contact Angle Results] [image]

       The results page for a contact angle analysis is quite simple.

       A summary table is shown on the bottom half with a results visualizer on the top half. Graphs of the left
       and right contact angles are also available if more than one image is analysed.

   Saving
       [image: Contact Angle Save dialog] [image]

       Once an analysis is finished, click on the 'Save' button in the footer to open the save dialog. All  data
       will  be saved in a folder with name determined by the 'Name' entry, and in a parent directory determined
       by the 'Parent' selection.

       As a convenience, you may choose to save some pre-made plots.  [image: Contact Angle Example save output]
       [image]

       An example save output is shown above, and screenshots of the contents of some  files  are  shown  below.
       (All coordinates are with respect to the origin being on the top-left corner of the image with increasing
       x and y in the right and down directions respectively.)
         [image: Contact Angle timeline.csv screenshot] [image] timeline.csv.UNINDENT
         [image:  Contact  Angle profile_extracted.csv screenshot] [image] drop1/profile_extracted.csv (each row
         is an (x, y) coordinate pair).UNINDENT
         [image: Contact Angle surface.csv  screenshot]  [image]  drop1/surface.csv  (The  coefficients  of  the
         surface line; first column is gradient, second column is y-intercept).UNINDENT
         [image:  Contact  Angle  tangents.csv  screenshot]  [image] drop1/tangents.csv (The coefficients of the
         tangent lines at the contact point. First row is left tangent,  second  row  is  right  tangent.  First
         column is gradient, second column is y-intercept).UNINDENT

GENICAM INTEGRATION

       Install   a   GenTL   producer,   (e.g.  see  harvesters  README  <https://github.com/genicam/harvesters#
       installing-a-gentl-producer>).

       OpenDrop checks the environment variable GENICAM_GENTL64_PATH (specified by the GenTL standard) for GenTL
       producers. To verify that a GenTL producer is installed correctly, you can run:

          $ echo $GENICAM_GENTL64_PATH
          /opt/mvIMPACT_Acquire/lib/x86_64

       (todo: Add details.)

NOTES

       User input validation is not yet implemented, invalid user input may cause OpenDrop  to  crash  or  print
       errors to the console.

       Stub.  [image]

       [image]
        <https://doi.org/10.21105/joss.02604>

       OpenDrop  is a fully-featured image analysis software for performing pendant drop tensiometry and contact
       angle measurements. Images can be loaded from the file system or acquired directly from  USB  webcams  or
       GenICam (GigE Vision, USB3 Vision) compliant industrial cameras.

       The software is released under the GNU GPL open source license, and available for free.

       For installation instructions, see "Installation <>".

                                                         ----

       Git repo:
       <https://github.com/jdber1/opendrop/>

       Questions, issues, or feedback:
       <https://github.com/jdber1/opendrop/issues>

Author

       OpenDrop Contributors

Copyright

       OpenDrop Contributors

                                                  Sep 24, 2025                                       OPENDROP(1)