summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-gco-wrapper.spec220
-rw-r--r--sources1
3 files changed, 222 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..9117105 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/gco-wrapper-3.0.8.tar.gz
diff --git a/python-gco-wrapper.spec b/python-gco-wrapper.spec
new file mode 100644
index 0000000..3ef19a8
--- /dev/null
+++ b/python-gco-wrapper.spec
@@ -0,0 +1,220 @@
+%global _empty_manifest_terminate_build 0
+Name: python-gco-wrapper
+Version: 3.0.8
+Release: 1
+Summary: pyGCO: a python wrapper for the graph cuts package
+License: MIT
+URL: http://vision.csd.uwo.ca/code/
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/f2/7c/f56206f0e6ebf7f9465f76bbac269959a3f1d46ad4b291794a6a63803762/gco-wrapper-3.0.8.tar.gz
+
+Requires: python3-Cython
+Requires: python3-numpy
+
+%description
+This is a python wrapper for [gco-v3.0 package](http://vision.csd.uwo.ca/code/), which implements a graph cuts based move-making algorithm for optimization in Markov Random Fields.
+It contains a copy of the **gco-v3.0 package**. Some of the design were borrowed from the [gco_python](https://github.com/amueller/gco_python) package. However, compared to gco_python:
+* This package does not depend on Cython. Instead it is implemented using the ctypes library and a C wrapper of the C++ code.
+* This package is an almost complete wrapper for gco-v3.0, which supports more direct low level control over GCoptimization objects.
+* This package supports graphs with edges weighted differently.
+This wrapper is composed of two parts, a C wrapper and a python wrapper.
+## Implemented functions
+ * **cut_general_graph**(...)
+ * **cut_grid_graph**(...)
+ * **cut_grid_graph_simple**(...)
+## Building wrapper
+1. download the last version of [gco-v3.0](http://vision.csd.uwo.ca/code/gco-v3.0.zip) to the _gco_source_
+1. compile gco-v3.0 and the C wrapper using `make`
+1. compile test_wrapper using `make test_wrapper`
+1. run the C test code `./test_wrapper` (now you have the C wrapper ready)
+```bash
+make download
+make all
+make test_wrapper
+./test_wrapper
+```
+The successful run should return:
+```bash
+labels = [ 0 2 2 1 ], energy=19
+data energy=15, smooth energy=4
+```
+Next test the python wrapper using `python test_examples.py`, if it works fine you are ready to use pygco.
+To include pygco in your code, simply import pygco module. See the documentation inside code for more details.
+## Install wrapper
+Clone repository and enter folder, then
+```bash
+pip install -r requirements.txt
+python setup.py install
+```
+Now it can be also installed from PyPi
+```bash
+pip install gco-wrapper
+```
+## Show test results
+Visualisation of the unary terns for **binary segmentation**
+![unary terms](./images/binary_unary.png)
+**4-connected** components with the initial labeling (left) and estimated labeling with regularisation **1** (middle) and **0** (right)
+![labelling](./images/binary_labels-4conn.png)
+**8-connected** components with the initial labeling (left) and estimated labeling with regularisation **1** (middle) and **0** (right)
+![labelling](./images/binary_labels-8conn.png)
+Visualisation of the unary terns for **3 labels segmentation**
+![unary terms](./images/grid_unary.png)
+with the __initial__ labeling (left) and __estimated__ labeling (right)
+![labelling](./images/grid_labels.png)
+
+%package -n python3-gco-wrapper
+Summary: pyGCO: a python wrapper for the graph cuts package
+Provides: python-gco-wrapper
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+BuildRequires: python3-cffi
+BuildRequires: gcc
+BuildRequires: gdb
+%description -n python3-gco-wrapper
+This is a python wrapper for [gco-v3.0 package](http://vision.csd.uwo.ca/code/), which implements a graph cuts based move-making algorithm for optimization in Markov Random Fields.
+It contains a copy of the **gco-v3.0 package**. Some of the design were borrowed from the [gco_python](https://github.com/amueller/gco_python) package. However, compared to gco_python:
+* This package does not depend on Cython. Instead it is implemented using the ctypes library and a C wrapper of the C++ code.
+* This package is an almost complete wrapper for gco-v3.0, which supports more direct low level control over GCoptimization objects.
+* This package supports graphs with edges weighted differently.
+This wrapper is composed of two parts, a C wrapper and a python wrapper.
+## Implemented functions
+ * **cut_general_graph**(...)
+ * **cut_grid_graph**(...)
+ * **cut_grid_graph_simple**(...)
+## Building wrapper
+1. download the last version of [gco-v3.0](http://vision.csd.uwo.ca/code/gco-v3.0.zip) to the _gco_source_
+1. compile gco-v3.0 and the C wrapper using `make`
+1. compile test_wrapper using `make test_wrapper`
+1. run the C test code `./test_wrapper` (now you have the C wrapper ready)
+```bash
+make download
+make all
+make test_wrapper
+./test_wrapper
+```
+The successful run should return:
+```bash
+labels = [ 0 2 2 1 ], energy=19
+data energy=15, smooth energy=4
+```
+Next test the python wrapper using `python test_examples.py`, if it works fine you are ready to use pygco.
+To include pygco in your code, simply import pygco module. See the documentation inside code for more details.
+## Install wrapper
+Clone repository and enter folder, then
+```bash
+pip install -r requirements.txt
+python setup.py install
+```
+Now it can be also installed from PyPi
+```bash
+pip install gco-wrapper
+```
+## Show test results
+Visualisation of the unary terns for **binary segmentation**
+![unary terms](./images/binary_unary.png)
+**4-connected** components with the initial labeling (left) and estimated labeling with regularisation **1** (middle) and **0** (right)
+![labelling](./images/binary_labels-4conn.png)
+**8-connected** components with the initial labeling (left) and estimated labeling with regularisation **1** (middle) and **0** (right)
+![labelling](./images/binary_labels-8conn.png)
+Visualisation of the unary terns for **3 labels segmentation**
+![unary terms](./images/grid_unary.png)
+with the __initial__ labeling (left) and __estimated__ labeling (right)
+![labelling](./images/grid_labels.png)
+
+%package help
+Summary: Development documents and examples for gco-wrapper
+Provides: python3-gco-wrapper-doc
+%description help
+This is a python wrapper for [gco-v3.0 package](http://vision.csd.uwo.ca/code/), which implements a graph cuts based move-making algorithm for optimization in Markov Random Fields.
+It contains a copy of the **gco-v3.0 package**. Some of the design were borrowed from the [gco_python](https://github.com/amueller/gco_python) package. However, compared to gco_python:
+* This package does not depend on Cython. Instead it is implemented using the ctypes library and a C wrapper of the C++ code.
+* This package is an almost complete wrapper for gco-v3.0, which supports more direct low level control over GCoptimization objects.
+* This package supports graphs with edges weighted differently.
+This wrapper is composed of two parts, a C wrapper and a python wrapper.
+## Implemented functions
+ * **cut_general_graph**(...)
+ * **cut_grid_graph**(...)
+ * **cut_grid_graph_simple**(...)
+## Building wrapper
+1. download the last version of [gco-v3.0](http://vision.csd.uwo.ca/code/gco-v3.0.zip) to the _gco_source_
+1. compile gco-v3.0 and the C wrapper using `make`
+1. compile test_wrapper using `make test_wrapper`
+1. run the C test code `./test_wrapper` (now you have the C wrapper ready)
+```bash
+make download
+make all
+make test_wrapper
+./test_wrapper
+```
+The successful run should return:
+```bash
+labels = [ 0 2 2 1 ], energy=19
+data energy=15, smooth energy=4
+```
+Next test the python wrapper using `python test_examples.py`, if it works fine you are ready to use pygco.
+To include pygco in your code, simply import pygco module. See the documentation inside code for more details.
+## Install wrapper
+Clone repository and enter folder, then
+```bash
+pip install -r requirements.txt
+python setup.py install
+```
+Now it can be also installed from PyPi
+```bash
+pip install gco-wrapper
+```
+## Show test results
+Visualisation of the unary terns for **binary segmentation**
+![unary terms](./images/binary_unary.png)
+**4-connected** components with the initial labeling (left) and estimated labeling with regularisation **1** (middle) and **0** (right)
+![labelling](./images/binary_labels-4conn.png)
+**8-connected** components with the initial labeling (left) and estimated labeling with regularisation **1** (middle) and **0** (right)
+![labelling](./images/binary_labels-8conn.png)
+Visualisation of the unary terns for **3 labels segmentation**
+![unary terms](./images/grid_unary.png)
+with the __initial__ labeling (left) and __estimated__ labeling (right)
+![labelling](./images/grid_labels.png)
+
+%prep
+%autosetup -n gco-wrapper-3.0.8
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-gco-wrapper -f filelist.lst
+%dir %{python3_sitearch}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed May 17 2023 Python_Bot <Python_Bot@openeuler.org> - 3.0.8-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..477372f
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+669fbb6ebc126b9d9cedb05c76072ad3 gco-wrapper-3.0.8.tar.gz