人工智能开发实战之OpenCV图像处理

内容导读

OpenCV介绍

OpenCV常见应用

一、OpenCV介绍

OpenCV 是一款跨平台的计算机视觉和机器学习软件平台,在计算机视觉领域广泛使用,是目前人工智能应用中的重要基础平台。

OpenCV用C++语言编写,它的主要接口也是C++语言接口,但是依然保留了大量的C语言接口。

1、OpenCV有以下特点

(1)开源:根据BSD 3条款许可发布。

(2)优化程度高:OpenCV是一个高度优化的库,专注于实时应用程序。

(3)跨平台:具有C++、Python和Java接口,支持Linux、Mac OS、Windows、iOS和Android。

OpenCV具有如下应用领域功能:运动估算、人脸识别、姿势识别、人机交互、运动理解、对象鉴别、分割与识别、立体视觉、运动跟踪、增强现实(AR技术)等。

基于上述功能实现需要,OpenCV还包括以下基于统计学的机器学习库:Boosting算法、决策树算法、Gradient Boosting算法、EM算法(期望最大化)、KNN算法、朴素贝叶斯分类、人工神经网络、随机森林、支持向量机(SVM)。

2、OpenCV的发展历史

3、安装Python接口的OpenCV 3.4.x版本

Tensorflow安装请参考本站:人工智能开发实战TensorFlow机器学习框架解析

和TensorFlow等第三方模块一样,使用pip工具进行安装,在Anaconda的TensorFlow环境下输入“pip install opencv-python==3.4.0.12”,OpenCV安装过程如图所示。

安装完成后进入Anaconda的TensorFlow环境下,输入“python”进入Python解释器,输入“import cv2”,若无错误信息,则代表安装完成,如图所示。

如果在一些嵌入式设备(如树莓派)上安装Python接口的OpenCV,可以直接下载源码安装或者使用pip命令安装。

注意:

嵌入式设备在使用pip安装Python接口的OpenCV后,会缺少一些运行时必要的库,需要通过apt-get命令安装,包括libatlas3-base、libjasper1、libgst7、python3-gst-1.0、libqtgui4、libqt4-test、libilmbase12、openexr、libavcodec57、libavformat57、libswscale4。

这些库安装完毕后,OpenCV才可以正常使用。

二、OpenCV常见应用

1、摄像头调用

通过cap对象还可以设置视频参数,cap参数如表所示

新建OpenCV项目目录,在OpenCV目录下新建文件,命名为camera.py,在PyCharm中编写代码,实现摄像头调用并显示。

import cv2
cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()

2、OpenCV的图像简单处理

(1)加载图像,显示并保存

在OpenCV目录下新建文件,命名为load_pic.py,在PyCharm中编写代码,实现图像加载、显示及保存的功能。

import cv2
img = cv2.imread('pic.jpg',cv2.IMREAD_COLOR)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('pic_copy.png',img, [int(cv2.IMWRITE_JPEG_QUALITY), 95])

cv2.imread(filepath,flags)函数的作用是读入一幅图像,filepath参数表示读入图像的完整路径,flags是读入图像的标志位,flags参数意义如表所示

(2)将图像处理为灰度图和二值化图

在OpenCV目录下新建文件,命名为gray_binary.py,在PyCharm中编写代码,将RGB图像转换为灰度图和二值化图并显示。

(3)图像绘制以及写字

在OpenCV目录下新建文件,命名为draw.py,在PyCharm中编写代码进行图像绘制并显示。

import cv2
img = cv2.imread('draw.jpg', cv2.IMREAD_COLOR)
cv2.line(img, (120, 200), (190, 180), (0, 0, 0), 15)
cv2.line(img, (340, 185), (410, 150), (0, 0, 0), 15)
cv2.line(img, (230, 350), (230, 450), (0, 0, 0), 15)
cv2.line(img, (300, 350), (300, 450), (0, 0, 0), 15)
cv2.rectangle(img, (190, 150), (340, 350), (255, 0, 0), 15)
cv2.circle(img, (265, 80), 70, (0, 0, 255), 15)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'take to your heart', (400,130), font, 1, (0,0,0), 2)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.imwrite('draw_result.png',img, [int(cv2.IMWRITE_JPEG_QUALITY), 95])

cv2.putText()函数的作用是在图像上写字,不加字库的话只接收英文和标点,参数分别为图像、要写的字、坐标、字体、字体大小、颜色、字体粗细。绘制出的结果如图所示。

(4)颜色过滤

在OpenCV目录下新建文件,命名为color_filtering.py,在PyCharm中编写代码来实现颜色过滤并显示。

import cv2
import numpy as np
lower_red = np.array([0, 0, 0])
upper_red = np.array([180, 255, 46])
img = cv2.imread('color_filter.jpg', cv2.IMREAD_COLOR)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, lower_red, upper_red)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.imshow('mask',mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

lower_red和upper_red为黑色的HSV阈值,cv2.inRange()函数可设定阈值,将图像显示出来,原图和颜色过滤后的图如图所示。

(5)形态变换

3、图像处理的意义及价值

图像处理的常用方法

更多精彩内容请持续关注本站!

  • 31
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值