欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

opencv3的学习

程序员文章站 2024-03-25 09:31:22
...

1、安装参照之前ros_indigo机器视觉
2、在opencv3中 cv2.cv被移除
cv2.cv.CV_CAP_PROP_FRAME_WIDTH
–> cv2.CAP_PROP_FRAME_WIDTH
cv2.cv.CV_CAP_PROP_FRAME_HEIGHT
–> cv2.CAP_PROP_FRAME_HEIGHT
cv2.cv.CV_FOURCC()
–> cv2.VideoWriter_fourcc
cv2.cv.CV_BGR2HSV
–> cv2.COLOR_BGR2HSV
cv2.cv.CV_HAAR_SCALE_IMAGE
–> cv2.CASCADE_SCALE_IMAGE

cv2.waitKey()
里面的数字为delay时间,如果大于0为刷新时间
超过指定时间则返回-1, 等于0没有返回值, 但也可以读取键盘数值

opencv视频抓取

  1 #coding=utf-8
  2 
  3 import cv2
  4 import numpy
  5 import matplotlib.pyplot as plot
  6 
  7 # opencv3
  8 
  9 # VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头
 10 capture = cv2.VideoCapture(0)
 11 
 12 # 将capture保存为motion-jpeg, cv_fourcc为保存格式
 13 size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)) )
 14 
 15 # cv_fourcc值要设置对, 不然无法写入, 而且不报错
 16 video = cv2.VideoWriter("/home/shuifu/bagfiles/Video/VideoTest.avi", cv2.VideoWriter_fourcc('I', '4', '2', '0'), 30, size)
 17 
 18 # isopened可以查看摄像头是否开启
 19 print capture.isOpened()
 20 
 21 # 要不断读取image需要设置一个循环
 22 num = 0
 23 while True:
 24         ret, img = capture.read()
 25 
 26         # 视频中的图片一张张写入
 27         video.write(img)
 28         cv2.imshow("Video", img)
 29 
 30         # 里面的数字为delay时间,如果大于0为刷新时间
 31         key = cv2.waitKey(1)
 32         # 超过指定时间则返回-1, 等于0没有返回值, 但也可以读取键盘数值
 33 
 34         cv2.imwrite("/home/shuifu/bagfiles/image_video/%s.jpg"%(str(num)), img)
 35         num = num + 1
 36 
 37         # ord为键盘输入对应的整数
 38         if key == ord("q"):
 39                 break
 40 video.release()
 41 # 如果不用release方法的话无法存储, 要等结束程序再等摄像头关了才能显示保持成功
 42 
 43 capture.release() # 把摄像头也顺便关了
 44 
 45 cv2.destroyAllWindows()

脸部识别,opencv自带了很多特征库有脸部,眼睛的还有很多,原理都一样

  1 #coding=utf-8
  2 
  3 import cv2
  4 
  5 imgPath = "/home/shuifu/bagfiles/Image/005.jpg"
  6 img = cv2.imread(imgPath)
  7 
  8 def detectFaces(img, cascade):
  9         # detectMultiScale函数中smallImg表示的是要检测的输入图像为smallImg,faces表示检测到的人脸目标序列
 10         # 1.3表示每次图像尺寸减小的比例为1.3, 
 11         # 4表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸)
 12         # CV_HAAR_SCALE_IMAGE表示不是缩放分类器来检测,而是缩放图像,Size(20, 20)为目标的最小最大尺寸
 13 
 14         rects = cascade.detectMultiScale(img, scaleFactor=1.3,  minNeighbors=5, minSize=(30, 30), flags = cv2.CASCADE_SCALE_IMAGE)
 15         if len(rects) == 0:
 16                 return []
 17         rects[:, 2:] += rects[:, :2]
 18         print rects
 19         return rects
 20 
 21 # 在img上绘制矩形
 22 def draw_rects(img, rects, color):
 23         for x1, y1, x2, y2 in rects:
 24                 cv2.rectangle(img, (x1, y1), (x2, y2), color, 2)
 25 
 26 # 转换为灰度图
 27 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 28 
 29 # 直方图均衡处理
 30 gray = cv2.equalizeHist(gray)
 31 
 32 # 脸部特征分类地址
 33 cascade_fn = "/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"
 34 
 35 # 读取分类器,CascadeClassifier下面有一个detectMultiScale方法来得到矩形  
 36 cascade = cv2.CascadeClassifier(cascade_fn)
 37 
 38 # 通过分类器得到rects
 39 rects = detectFaces(gray, cascade)
 40 
 41 # vis为img副本
 42 vis = img.copy()
 43 
 44 # 画矩形
 45 draw_rects(vis, rects, (0, 255, 0))
 46 
 47 cv2.imshow("facedetect", vis)
 48 cv2.waitKey(0)
 49 cv2.destroyAllWindows()

3、安装jdk-8u144-linux-x64.tar.gz
删除以前旧的
sudo apt-get purge openjdk*
下载jdk-8u144-linux-x64.tar.gz
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
tar zxvf jdk-8u144-linux-x64.tar.gz
cd /usr/lib
sudo mkdir jvm
cd ~/Downloads/
sudo cp -r ./jdk1.8.0_144 /usr/lib/jvm
sudo mv jdk1.8.0_144/ java-8u144-sun
4、配置java运行环境
vim ~/.bashrc
在底部加入一下命令

export JAVA_HOME=/usr/lib/jvm/java-8u114-sun   
export JRE_HOME=${JAVA_HOME}/jre   
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   
export PATH=${JAVA_HOME}/bin:$PATH 

source ~/.bashrc
5、下载eclipse并安装
解压tar -zxvf eclipse-XXX-linux-gtk.tar.gz
创建桌面链接
sudo vim /usr/share/applications/eclipse.desktop

    [Desktop Entry]  
    Name=Eclipse  
    Comment=Eclipse SDK  
    Encoding=UTF-8  
    Exec=/usr/local/eclipse/eclipse  
    Icon=/usr/local/eclipse/icon.xpm  
    Terminal=false  
    Type=Application  
    Categories=Application;Development;  

注意,文件名千万别打错了,不能有空格,结尾不能有空格
sudo chmod u+x eclipse.desktop
sudo nautilus以管理员身份运行

6、连接java目录
cd eclipse所在目录
mkdir jre
cd jre
ln -s 你的JDK目录/bin bin

7、安装PyDev
Help菜单中,选择Install New Software···,
选择Add按钮,Name:PyDev(这个随便起),Location:http://pydev.org/updates(PyDev的更新地址),OK
配置PyDev插件
在Window菜单中选Preference,
PyDev-> Python Interpreter,New一个Python解释器,填上解释器名字和路径,路径选相应的python二进制文件

8、安装 Anaconda
下载 Anaconda https://www.continuum.io/downloads
下载Linux版本,根据Python版本选择相应的。
cd SoftWare/Anaconda/
bash Anaconda2-4.4.0-Linux-x86_64.sh

Are sure you want to continue the installation? [yes|no]
yes
In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
enter
Do you approve the license terms? [yes|no]
yes
Anaconda2 will now be installed into this location:
/home/shuifu/anaconda2
  - Press ENTER to confirm the location
enter

安装完成后设置PATH的操作

# 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin
echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc
# 更新bashrc以立即生效
source ~/.bashrc

设置后默认启动 ~/anaconda2/python
如果启用默认的python
将export PATH=”~/anaconda2/bin:$PATH注释掉

9、安全卸载anaconda
删除~/.bash_profile 文件中的$PATH …anaconda 那一行
删除anaconda文件夹

参考备注:
http://blog.csdn.net/u012374012/article/details/42610935
http://blog.csdn.net/u012162613/article/details/43523507
http://blog.csdn.net/u010555682/article/details/52563997