对于 debian 用户来说,创建自己的 libopencv-nonfree 包很容易。
我遵循了 python 的 opencv 教程,但在我的 debian 中缺少 SIFT 和 SURF 模块。并且没有可用于 debian 的非免费软件包,包括 SIFT 和 SURF 等。
由于许可证问题,它们被从包装中剥离......
我之前从未为 debian 创建过软件包(添加新模块等),但我按照 debian 教程中的一些小步骤进行了尝试并猜测了一下,1 天后,瞧……我开始使用 libopencv-nonfree2。 4 个 deb 包和一个具有正确绑定的 python 模块。
(我不知道我是否还需要安装新建的 python-opencv 包或只安装非免费的......我重新安装了两者并获得了一个包含所有必要非自由模块的工作 python opencv 库!)
好的,这里是:
!这是针对 libopencv 2.4 的!
!除了以普通用户身份安装外,您可以执行所有步骤!
我们需要从 debian 存储库中构建的要素和一些工具来编译和创建一个新包:
sudo apt-get install build-essential fakeroot devscripts
在您的主目录中创建一个目录并切换到该目录:
cd ~ && mkdir opencv-debian
cd opencv-debian
下载所需的软件包:
apt-get source libopencv-core2.4
并下载所有需要的依赖包来构建新的 opencv
apt-get build-dep libopencv-core2.4
这将下载所需的源并创建一个名为“opencv-2.4.9.1+dfsg”的目录
切换到那个目录:
cd opencv-2.4.9.1+dfsg
现在您可以通过键入以下内容来测试包是否会在不修改的情况下构建:
fakeroot debian/rules binary
这将需要很长时间!这一步应该没有错误地完成你现在在你的 opencv-debian 目录中有很多 .deb 包
现在我们对包定义进行一些修改,让 debian 构建非自由模块和包!
更改到 opencv-debian 目录并下载正确的 opencv 源.. 在我的情况下 opencv 2.4.9 左右
我从https://github.com/Itseez/opencv/releases得到了我的
wget https://codeload.github.com/Itseez/opencv/tar.gz/2.4.9
这将下载 opencv-2.4.9.tar.gz
提取档案:
tar -xzvf opencv-2.4.9.tar.gz
这会将原始源解压到名为 opencv-2.4.9 的目录中
现在将非自由模块从原始源复制到 debian 源:
cp -rv opencv-2.4.9/modules/nonfree opencv-2.4.9.1+dfsg/modules/
好的,现在我们有了非自由模块的源代码,但这对于 debian 来说还不够……我们需要修改 1 个文件并创建一个新的
我们必须编辑 debian 控制文件并在文件末尾添加一个新部分:(我在这里使用 mcedit 作为编辑器)
mcedit opencv-2.4.9.1+dfsg/debian/control
或使用您选择的任何其他编辑器
并添加此部分:
Package: libopencv-nonfree2.4
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: OpenCV Nonfree Modules like SIFT and SURF
This package contains nonfree modules for the OpenCV (Open Computer Vision)
library.
.
The Open Computer Vision Library is a collection of algorithms and sample
code for various computer vision problems. The library is compatible with
IPL (Intel's Image Processing Library) and, if available, can use IPP
(Intel's Integrated Performance Primitives) for better performance.
.
OpenCV provides low level portable data types and operators, and a set
of high level functionalities for video acquisition, image processing and
analysis, structural analysis, motion analysis and object tracking, object
recognition, camera calibration and 3D reconstruction.
现在我们创建一个名为 libopencv-nonfree2.4.install 的新文件
touch opencv-2.4.9.1+dfsg/debian/libopencv-nonfree2.4.install
并编辑:
mcedit opencv-2.4.9.1+dfsg/debian/libopencv-nonfree2.4.install
并添加以下内容:
usr/lib/*/libopencv_nonfree.so.*
好的,就是这样,现在再次创建包:
cd opencv-2.4.9.1+dfsg
首先清理:
fakeroot debian/rules clean
并构建:
fakeroot debian/rules binary
等等……过了一会儿,你有了一个全新的包 libopencv-nonfree2.4.deb!
现在以root身份安装:
dpkg -i libopencv-nonfree2.4.deb
dpkg -i python-opencv.deb
和测试!
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
sift = cv2.SIFT()
kp = sift.detect(gray,None)
img=cv2.drawKeypoints(gray,kp)
corners = cv2.goodFeaturesToTrack(gray,16,0.05,10)
corners = np.int0(corners)
for i in corners:
x,y = i.ravel()
cv2.circle(img,(x,y),90,255,3)
plt.imshow(img),plt.show()
玩得开心!