OpenCV有一些教程涉及尝试检测实时视频流中的模式.例如:
http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html
但是,这并不是我想要做的.我有静态图像,例如.jpgs,包括2D条形码.
我的目标是从图像中隔离一个或多个2D条形码.如果.jpg是1000像素乘500像素,而2D条形码只是200像素乘200像素,我只想将200x200像素样本保存到输出文件中.
我怀疑这需要Haar级联或LBP级联.我怀疑功能检测无法做到这一点.
但是,我找不到任何解决此问题的教程.
此外,opencv发行版自动构建一些似乎相关的可执行文件,例如opencv_perf_objdetect和opencv_test_objdetect,但它们似乎与教程相对应,也不与文档中的任何其他内容相对应.
问题:OpenCV文档中某处是否实际解释了静态图像中如何检测子图像的问题?如果是的话,在哪里?
谢谢.
我想在Linux Mint上使用zbar和python.
我试过apt-get zbar,但我找不到任何包.
所以我试着用
apt-get install zbar-tools
Run Code Online (Sandbox Code Playgroud)
这似乎有效.
我试图运行以下列开头的基本示例代码:
#!/usr/bin/python
from sys import argv
import zbar
import Image
Run Code Online (Sandbox Code Playgroud)
但是,该代码崩溃并出现错误:
Traceback (most recent call last):
File "./p4.py", line 3, in <module>
import zbar
ImportError: No module named zbar
Run Code Online (Sandbox Code Playgroud)
通常我希望找到一个名为zbar.py的文件,我只想将它添加到我的路径中.
我在我的系统上看不到任何看起来像一个漂亮,整洁的zbar文件或目录的东西.
我已经找到:
./var/cache/apt/archives/zbar-tools_0.10+doc-8_amd64.deb
./var/lib/dpkg/info/zbar-tools.list
./var/lib/dpkg/info/zbar-tools.md5sums
./usr/bin/zbarcam
./usr/bin/zbarimg
./usr/share/doc/zbar-tools
./usr/share/man/man1/zbarimg.1.gz
./usr/share/man/man1/zbarcam.1.gz
Run Code Online (Sandbox Code Playgroud)
而且我想我可以将所有这些添加到我的路径中,但这似乎是绝望的过度杀伤力.
欢迎提出建议.谢谢.
编辑:根据Jakob Weisblat的建议,我尝试了root作为pip,我相信我需要从源代码重新安装zbar,因为pip需要它找不到的.h文件.
我试过pip得到了:
Downloading/unpacking zbar
Getting page https://pypi.python.org/simple/zbar/
URLs to search for versions for zbar:
* https://pypi.python.org/simple/zbar/
Analyzing links from page https://pypi.python.org/simple/zbar/
Skipping link https://pypi.python.org/packages/2.5/z/zbar/zbar-0.10.win32-py2.5.exe#md5=8566371bbc9010fc9a953b5ea7cac54f (from https://pypi.python.org/simple/zbar/); unknown archive …Run Code Online (Sandbox Code Playgroud) 我从CentOS和OpenJDK 1.7开始
# java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
为了运行特定的应用程序,我想使用从RPM提供的Oracle Java 1.6.
我将Oracle二进制文件复制到特定的新目录:
# pwd
/oracleJava/jdk-6u45-linux-x64-rpm
Run Code Online (Sandbox Code Playgroud)
我提取了二进制文件,它给了我以下文件:
# ls
jdk-6u45-linux-amd64.rpm
sun-javadb-core-10.6.2-1.1.i386.rpm sun-javadb-javadoc-10.6.2-1.1.i386.rpm
sun-javadb-client-10.6.2-1.1.i386.rpm sun-javadb-demo-10.6.2-1.1.i386.rpm
sun-javadb-common-10.6.2-1.1.i386.rpm sun-javadb-docs-10.6.2-1.1.i386.rpm
Run Code Online (Sandbox Code Playgroud)
我安装了RPM并且rpm实用程序认为它已正确安装:rpm -q jdk jdk-1.6.0_45-fcs.x86_64
# rpm -Uvh ./*.rpm
Preparing... ########################################### [100%]
package jdk-2000:1.6.0_45-fcs.x86_64 is already installed
# rpm -Uvh sun-javadb-*.rpm
[I omit the feedback because it generates a formatting error]
#
Run Code Online (Sandbox Code Playgroud)
但是,Java版本只显示1.7#java -version java版本"1.7.0_25"OpenJDK运行时环境(rhel-2.3.10.4.el6_4-x86_64)OpenJDK 64位服务器VM(内置23.7-b01,混合模式)
换句话说,我期待Oracle文件在某处给我一些新的/ java目录,新的java可执行文件将为"java -version"返回一个不同的答案
我需要这个新目录,以便我可以设置JAVA_HOME并使用1.6版本的Java.
非常感谢有用的建议.提前致谢.