折腾死我了
因为自己安装了opencv和tensorflow,结果opencv一定要在workon cv才能运行,也就是说在安装opencv3.1的时候,把opencv3.1安装在cv的虚拟环境中,但是在tensorflow安装的时候,利用anaconda 命令行安装,所以导致workon cv使用的python版本是deflaut 版本,python2.7 而在conda中运行tensorflow是anaconda下的Python版本,所以导致两个环境看似一样,结果根本不能在一起运行。
之前安装的时opencv的源码,也是最常见的安装方式。
可以参照我之前对外国小哥主页的解读
下面说一下捷径,让两个环境结合起来,绕过之前走过的坑
1 下载并安装Anaconda4.2.0
所有的Anaconda版本,Linux选Anaconda3-4.2.0-Linux-x86_64.sh
注意系统是64位,Tensorflow只支持windows64位。
(https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/)
2 打开终端,然后执行(这个网站可能地址不稳定,多试几次)
conda install -c https://conda.anaconda.org/menpo opencv3
3.打开python测试一下代码.
import cv2
cv2.__version__
1 利用anaconda安装tensorflow
建立一个 conda 计算环境
conda create -n tensorflow python=2.7
2 激活环境,使用 conda 安装 TensorFlow
Activate the environment and use pip to install TensorFlow inside it.
source activate tensorflow
3 安装tensorflow
安装
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
安装成功后,每次使用 TensorFlow 的时候需要激活 conda 环境,可以看到,在正常情况下,是anaconda的bin路径在环境变量中,但激活conda-tensorflow环境后,环境变量中存储的是tensorflow下的bin路径
测试tensorflow是否安装成功
(1) 激活conda环境
(2)进入python
(3)import tensorflow
整个过程比较顺利,tensorflow被成功import了
# -*- coding:utf-8 -*-
import cv2
import sys
from PIL import Image
def CatchUsbVideo(window_name, camera_idx):
cv2.namedWindow(window_name)
# 视频来源,可以来自一段已存好的视频,也可以直接来自USB摄像头
cap = cv2.VideoCapture(camera_idx)
while cap.isOpened():
ok, frame = cap.read() # 读取一帧数据
if not ok:
break
# 显示图像并等待10毫秒按键输入,输入‘q’退出程序
cv2.imshow(window_name, frame)
c = cv2.waitKey(10)
if c & 0xFF == ord('q'):
break
# 释放摄像头并销毁所有窗口
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
if len(sys.argv) != 2:
print("Usage:%s camera_id\r\n" % (sys.argv[0]))
else:
CatchUsbVideo("截取视频流", int(sys.argv[1]))
代码来自一个对opencv研究的博主。
保存这个文件为opencamera.py文件,在终端运行,0表示你的摄像头设备编号,0为打开默认摄像头
python opencamera.py.py 0
之前通过前面的安装opencv,下载了一个opencv3.1的文件夹
虽然最后因为opencv和tensorflow不在一个虚拟环境下,不能同时运行,但是安装了opencv3.1这个包可以看到很多源代码,其中包括很python版本的源码可以提供参和学习,虽然过程曲折,也不能说安装opencv3.1这个包没有用,对后面学习和研究源码还是很有帮助的。
而且最后还是实现了把tensorflow和opencv结合起来。结局很愉快
【原创文章】转载请注明出处:http://blog.csdn.net/wearge/article/details/77159298