python-opencv安装及入门
Posted 多弗朗强哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-opencv安装及入门相关的知识,希望对你有一定的参考价值。
零、安装Python
一、安装python-opencv
安装pip
sudo apt install python-pip
安装opencv-python
前提是python3,可打开thonny编辑器看输出拦的提示,一般新版系统都是python3
pip3 install opencv-python
sudo apt-get install libatlas3-base
sudo apt-get install libjasper1
sudo apt-get install libgst7
sudo apt-get install python3-gst-1.0
sudo apt-get install libqtgui4
sudo apt-get install libqt4-test
sudo apt-get install libilmbase12
sudo apt-get install openexr
sudo apt-get install libavcodec57
sudo apt-get install libavformat57
sudo apt-get install libswscale4
二、测试程序-调用摄像头
新建vedio.py文件
import cv2 #导入opencv库
cap = cv2.VideoCapture(0) #调用摄像头,参数是设备编号
#主循环是读取摄像头图像,按q停止
while True:
ret, frame = cap.read()
cv2.imshow(‘video‘,frame)
if cv2.waitKey(1) & 0xFF == ord(‘q‘):
break
cap.release() #释放cap
cv2.destroyAllWindows()#销毁所有窗口
此时出现了BUG:
/home/gordon/python-virtual-environments/RL_2018HW/gym-gazebo:/home/gordon/ros_ws/devel/lib/python2.7/dist-packages:/opt/ros/kinetic/lib/python2.7/dist-packages:/opt/movidius/caffe/python
解决方案:
打开bash.rc文件,注释这一条
#source /opt/ros/kinetic/setup.bash
移除错误路径:
打开控制台
python
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
import cv2
Traceback (most recent call last):
File "
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
import sys
sys.path.remove(‘/opt/ros/kinetic/lib/python2.7/dist-packages‘)
import cv2
注销登录即可。
再次运行上述程序,就会调用摄像头了!
三、颜色空间转换
OpenCV 中有数百种不同色彩空间转换的方法。当前最主要的,最常用的有三种颜色空间:灰度,BGR,HSV。
? 灰度色彩空间是通过去除彩色信息来将其转换为灰阶,灰度色彩空间对中间处理特别有效,比如人脸检测。
? BGR,即蓝-绿-红色彩空间,每一个像素点由一个三元数来表示,分别代表蓝绿红三种颜色
? HSV,H(Hue)是色调,用角度度量,取值范围为 0°~360°,从红色开始按逆时针方向计算,红色为 0°,绿色为 120°,蓝色为 240°,S(Saturation)是饱和度,V(Value)表示黑暗程度。
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow(‘video‘,frame)
#灰度转化
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow(‘gray‘,gray)
#hsv转化
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
cv2.imshow(‘hsv‘, hsv)
if cv2.waitKey(1) & 0xFF == ord(‘q‘):
break
cap.release()
cv2.destroyAllWindows()
四、图像缩放
很多时候,读取图像过于清晰,会导致像素点过多,读取缓慢,影响效率,下面介绍 Opencv是如何在保留最大信息的前提下缩放图像的。
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow(‘video‘,frame)
#第 8 行, shape ()函数返回一个列表,这个列表第一个元素是图像宽度,第二个元素是图像高度,分别赋值为 x,y
x, y = frame.shape[0:2]
#第 9 行,resize 函数,将图像缩小为原图 1/4 大小,x/2,y/2
small_frame = cv2.resize(frame, (int(y/2), int(x/2)))
cv2.imshow(‘small‘, small_frame)
if cv2.waitKey(1) & 0xFF == ord(‘q‘):
break
cap.release()
cv2.destroyAllWindows()
五、图像滤波
在 Opencv 中,对图像和视频的处理大多会涉及傅里叶变换,即一切波形都可以由一系列简单且频率不同的正弦曲线叠加得到。这个概念对图像处理非常有帮助,这样我们可以区分图像哪些区域信号变化特别强,哪些没那么强,从而可以任意标记噪声区域,感兴趣区域等。
? 高通滤波:检测图像某个区域,根据像素与周围像素亮度差值来提升该亮度的滤波器
? 低通滤波:在像素与周围像素亮度差值小于特定值时,平滑亮度,用于去噪和模糊化。
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
#cv2.imshow(‘video‘,frame)
x, y = frame.shape[0:2]
small_frame = cv2.resize(frame, (int(y/2), int(x/2)))
cv2.imshow(‘small‘, small_frame)
#Blur:模糊滤波
img_mean = cv2.blur(small_frame, (5,5))
#Gaussianblur:高斯滤波
img_Guassian = cv2.GaussianBlur(small_frame, (5,5), 0)
#Median:中值滤波
img_median = cv2.medianBlur(small_frame, 5)
#Bilater:双边滤波
img_bilater = cv2.bilateralFilter(small_frame, 9, 75, 75)
cv2.imshow(‘mean‘, img_mean)
cv2.imshow(‘guassian‘, img_Guassian)
cv2.imshow(‘median‘, img_median)
cv2.imshow(‘bilater‘, img_bilater)
if cv2.waitKey(1) & 0xFF == ord(‘q‘):
break
cap.release()
cv2.destroyAllWindows()
以上是关于python-opencv安装及入门的主要内容,如果未能解决你的问题,请参考以下文章
在mac上安装python-opencv,并在pycharm测试
在 OSX Yosemite 上安装 Python-Opencv