本节实现的是同时使用opencv和matplotlib两种方式来显示图像,以比较二者之间的差别。
测试灰度图像
测试彩色图像
分析彩色图像出现差异的原因
实现过程
引用
不再赘述,代码如下。
python
import cv2
import numpy
import matplotlib.pyplot as plot
测试灰度图像
打开灰度图像,先用opencv显示,再用matplotlib显示,代码如下:
``` python
test for a gray image
img1 = cv2.imread("test1.jpg")
using opencv
cv2.imshow("Gray(opencv
继续阅读 »
随着公司的业务的发展有幸接触到OpenCV 这个图形库,这篇文章主要是总结一下在Mac 上使用OpenCV做一个动态的广告植入。
OpenCV 是什么:
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。
继续阅读 »
本文介绍了如何在linux(本文是ubunut 16.04系统)下编译安装opencv(本文采用的opencv版本是3.1.0),包括安装流程和可能遇到的问题,这些大部分都是基于我个人的经验总结和opencv官网。
1.安装过程
1.1 解决基本依赖
首先必须确保你的系统中安装了opencv编译过程中的基本软件包,如果没有请用管理员权限或者请你的服务器的管理员帮忙执行以下命令。
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev
继续阅读 »
Python作为一门极其易学的语言,在科学计算等领域存在较大的应用,同样,著名的OpenCV库也发布了支持Python的库,本节主不再介绍如何在Ubuntu上配置Python OpenCV,有需要的同学可以参考这里。
本节将利用Python OpenCV做一个简单的测试,即
打开一个图片并显示
创建一个空图并显示
将彩色图像转成灰度图像并显示
实现过程
引用
这里我们需要引用cv2和numpy,cv2不言而喻,而NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,这里在引用时把numpy重命名为np。
python
import cv2
import
继续阅读 »
本节实现的是使用OpenCV里自带的函数,绘制直线、长方形、圆形和椭圆。
绘制直线
绘制长方形
绘制圆形
绘制椭圆
添加文字
实现过程
引用与创建空图
不再赘述,代码如下。
``` python
import cv2
import numpy
empty image
img = np.zeros((512, 512, 3), np.uint8)
```
绘制直线
使用opencv自带的line()函数绘制一条对角线,其声明如下:
python
cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
其中各种参数的意义如下:
img
继续阅读 »
本节实现的是使用OpenCV里自带的函数,对图像进行简单的几何变换。
放大
缩小
平移
旋转
实现过程
读取原图并显示
不再赘述。
``` python
import cv2
import numpy as np
read the original
img = cv2.imread('../test2.jpg')
cv2.imshow('original', img)
```
放大
利用OpenCV自带的resize()函数实现放大与缩小。其声明为:
python
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
其中各个参数的意义如
继续阅读 »
本节实现的是使用OpenCV里自带的函数,检测出视频里图像中的蓝色和天蓝色、青色,比如我的手机背景、我衣服上的蓝色格子,墙砖的蓝色和学生证照片上的蓝色背景。
设置“蓝色”HSV范围
BGR转HSV
捕获摄像头视频
获取蓝色部分mask
图像按位与操作
显示蓝色部分图像
实现过程
定义视频对象
视频对象用于捕获摄像头视频流。
``` python
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
```
设置HSV中蓝色、天蓝色范围
这里主要参考了这个博客,我设置的颜色范围如下。
```python
set blue thresh
lower_blue=
继续阅读 »
本节实现的是提取出灰度图像和彩色图像的直方图。
显示灰度图像的灰度直方图
显示彩色图像各个通道的灰度直方图
在一幅图上显示三个通道的灰度直方图
实现过程
引用与打开图片
不再赘述,代码如下。
``` python
import cv2
import numpy
img1 = cv2.imread("test1.jpg", 0) #灰度图像
img2 = cv2.imread("test2.jpg") #彩色图像
```
灰度图像直方图
opencv里自带了calcHist()函数,可以计算一幅图像中各个像素值出现的次数,其函数的各个参数如下:
python
hist = cv2.calcHist([i
继续阅读 »
本节实现的是使用OpenCV里自带的函数,将一幅logo加到一张图片上去。
提取mask
利用mask生成带logo图片
实现过程
引用与读取图片
不再赘述,代码如下。
``` python
import cv2
import numpy as np
img = cv2.imread('test.png')
logo = cv2.imread('logo.jpg')
cv2.imshow("Img_Original", img)
```
获取mask
先将logo转成黑白,然后设置合适的阈值二值化,使得有内容的部分为黑(0),无内容的部分为白(255),这里使用的阈值为205。
```python
logo_gray
继续阅读 »
本节实现的是使用OpenCV里自带的函数,计算程序的执行时间。
获取系统时钟数
获取系统时钟频率
实现过程
初始时间
不再赘述,代码如下。
``` python
time start
t1 = cv2.getTickCount()
```
执行代码
我这里执行的是之前绘制直方图的代码,请参考我的博客和GitHub。
结束时间
获取程序结束时间。
```python
time end
t2 = cv2.getTickCount()
```
计算执行秒数
利用getTickFrequency()获取时钟频率。
python
t = (t2-t1)/cv2.getTickFrequency()
print
继续阅读 »