如何编译原始 Haskell 绑定到 OpenCV 又名 GitHub 成员 arjuncomar 的 OpenCV-Raw 存储库
Posted
技术标签:
【中文标题】如何编译原始 Haskell 绑定到 OpenCV 又名 GitHub 成员 arjuncomar 的 OpenCV-Raw 存储库【英文标题】:How to compile the Raw Haskell bindings to OpenCV aka GitHub member arjuncomar's OpenCV-Raw repo 【发布时间】:2013-11-15 00:02:55 【问题描述】:此链接 https://github.com/arjuncomar/opencv-raw/blob/master/README.md 处的 OpenCV-Raw readme.md 中的 Arjuncomar 状态
"编译/安装
目前编译这个包可能有点棘手,因为到目前为止我只有机会在我的机器上测试它。首先,您需要在您的机器上为 OpenCV 版本生成 C 包装器——这个 repo 仅包含 OpenCV 3.0 (HEAD) 的包装器。您可以通过以下方式生成这些包装器(以及相应的 Haskell 绑定):
./setup.sh <path to opencv headers>
例如
./setup.sh /usr/local/include"
我在 Opencv-Raw 的根目录中运行了“./setup.sh /usr/local/include”,顺便说一句,我在 Ubuntu Saucy 64 位上安装了 OpenCV 2.4.7,我收到了这个错误
Traceback (most recent call last):
File "cbits/genhsc.py", line 161, in <module>
cgen.gen(header_dir, headers, dstdir)
File "/home/w/Documents/opencv-raw-master/cbits/genc.py", line 367, in gen
self.readHeaders(header_dir, srcfiles)
File "/home/w/Documents/opencv-raw-master/cbits/genc.py", line 350, in readHeaders
decls = parser.parse(header_dir + hdr)
File "/home/w/Documents/opencv-raw-master/cbits/hdr_parser.py", line 732, in parse
f = open(hname, "rt")
IOError: [Errno 2] No such file or directory: '/usr/local/include/opencv2/core.hpp'
Arjuncomar 声明“此存储库仅包含 OpenCV 3.0 (HEAD) 的包装器”。所以我试图找到一个 OpenCV 3.0 下载,但没有运气,而且我从未在 /usr/local/include 中看到过 core.hpp 文件,所以不太了解错误。我正在尝试将 OpenCV 的 C++ 接口 arjuncomar 在他的 haskell 绑定中编写的自动生成的 C 包装器合并到我自己的 OpenCV 包装器中,用于另一种语言(当然减去 haskell 部分),我觉得这可能是一个很好的第一步,但如果我可以为这段代码制作一个make文件我/e
cpp 文件
void cv_imshow(String* winname, Mat* mat)
cv::imshow(*winname, *mat);
hpp 文件
void cv_imshow(String* winname, Mat* mat);
并期望它是 C++ OpenCV 代码的完美 C 包装器,请告诉我...如果可能,请在此处发布有关如何制作此类 make 文件的链接将有很大帮助....我已经习惯了C 但对 C++/C++ MakeFiles 来说是新手,我宁愿在第一次尝试时做到完美,这样我可以更快地输出音量而不必担心出错...
....任何帮助表示赞赏...美好的一天=) 各位...
【问题讨论】:
【参考方案1】:我是图书馆作者。在 OpenCV 人员的要求下,该库已被移动了几次。它目前位于我的opencv_contrib repo 的分支中。按照自述文件中的说明构建和安装包装器。
该过程相当于设置一个 opencv 构建目录,让 cmake
通过告诉它 opencv 源代码树的位置以及它需要从 opencv_contrib 加载额外的模块来填充它。
cd <cmake build directory>
cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory>
编译和安装库会将 C 包装头文件安装到“/include/opencv2/c/”,将编译后的二进制文件安装到“/lib/libopenc_c.so”。如果系统上存在cabal
和ghc
,它也会编译和安装Haskell 绑定。对我来说,这很简单:
make -j6 && sudo make install
以这种方式构建应该避免 OP 中列出的问题,因为标头由 cmake
从源代码树中提取并直接传递给标头解析器和包装器生成器。请将错误报告发送至opencv_raw repo 或opencv_contrib。我正在查看两个存储库,我总是很乐意接受拉取请求。
Edward -- 我知道您正试图与我取得联系。您可以通过 nrujac at
gmail dot
com 或直接在 github 上通过在任何 repos 上打开问题与我联系。
【讨论】:
【参考方案2】:我发现这里只是 buld Arjun Comars fork https://github.com/arjuncomar/opencv,绑定将在 opencv_generated cpp 和 hpp 文件中自动生成
【讨论】:
以上是关于如何编译原始 Haskell 绑定到 OpenCV 又名 GitHub 成员 arjuncomar 的 OpenCV-Raw 存储库的主要内容,如果未能解决你的问题,请参考以下文章