OpenCV-Python,计算机视觉开发利器

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
简介: 人工智能,一个已经被谈论了几十年的概念(最早是图灵在1950年提出)。如今这几年,相关技术的发展速度是越来越快。高大上如无人驾驶、智能安防、AI辅助诊断,接地气如刷脸支付、内容推荐、自动翻译等,众多领域借助人工智能的力量而进化。从百度搜索指数的变化,也能从一个侧面反映出关注度在不断上升。

人工智能,一个已经被谈论了几十年的概念(最早是图灵1950年提出)。如今这几年,相关技术的发展速度是越来越快。高大上如无人驾驶、智能安防、AI辅助诊断,接地气如刷脸支付、内容推荐、自动翻译等,众多领域借助人工智能的力量而进化。从百度搜索指数的变化,也能从一个侧面反映出关注度在不断上升。



而这其中,很多应用都涉及到“计算机视觉”这样一个细分领域。简单来说,就是将图像信息转化为计算机可以处理的数字信息,从而让计算机能“看得见”。这个信息不仅仅是二维的图片,也包括三维场景、视频序列等。基本上所有需要用到摄像头、图片、视频的应用场景,都离不开计算机视觉的支持。因此,这也是人工智能领域中比较热门的一个方向。


来自《2017年人工智能行业发展研究报告白皮书》- IT耳朵&IT桔子


而说到计算机视觉,就不能不提到 OpenCV,它是一个历史悠久、功能丰富、社区活跃的开源视觉开发库。一方面,它提供了计算机视觉以及图像处理方面最常用最基础的功能支持,是开发的必备工具;另一方面,它在新版本中紧跟潮流,加入对新的算法、硬件的支持(v3.3 正式引入 DNN)。


OpenCV 基于 C++ 编写,但提供了 Python、Ruby、MATLAB 等多种语言接口。这对于习惯使用 Python 开发的人工智能从业者来说非常方便。之前的不少习题和开发案例中,我们都有用到过。今天我们再用几个常见的例子,演示下 OpenCV-Python 的强大功能。


安装:


OpenCV 的安装,不同平台不同版本会有一些差异。安装前需要装好 numpy,强烈建议先安装好 Anaconda,然后直接通过命令安装:


pip install opencv-python


如果你运气好,代码里运行 import cv2 没报错就是成功了。


但大多数时候可能不行。你可以考虑去这里下载安装文件:


https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv


然后通过命令从本地安装:


pip install opencv_python‑3.4.3‑cp37‑cp37m‑win_amd64.whl


这里下载的安装文件版本号务必要和你本机的 Python 版本相对应。


如果安装时还有其他问题,可在网上直接搜索报错,通常都会有解决方案,这里不一一赘述。


基本的图像读写:


我们用图像处理的经典范例 Lenna 来做测试


可自行搜索这幅图像的来

import cv2 as cv
# 读图片
img = cv.imread('img/Lenna.png')
# 图片信息
print('图片尺寸:', img.shape)
print('图片数据:', type(img), img)
# 显示图片
cv.imshow('pic title', img)
cv.waitKey(0)
# 添加文字
cv.putText(img, 'Learn Python with Crossin', (50, 150), cv.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 4)
# 保存图片
cv.imwrite('img/Lenna_new.png', img)


OpenCV-Python 中的图像数据使用了 numpy 库的 ndarray 类型进行管理,便于进行各种数值计算和转换。


常见的图像处理:


import numpy as np
# 灰度图
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imwrite('img/Lenna_gray.png', img_gray)
# 二值化
_, img_bin = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
cv.imwrite('img/Lenna_bin.png', img_bin)
# 平滑
img_blur = cv.blur(img, (5, 5))
cv.imwrite('img/Lenna_blur.png', img_blur)
# 边缘提取
_, contours, _ = cv.findContours(img_bin, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
img_cont = np.zeros(img_bin.shape, np.uint8)    
cv.drawContours(img_cont, contours, -1, 255, 3) 
cv.imwrite('img/Lenna_cont.png', img_cont)


这几种都属于数字图像处理的常用方法。OpenCV-Python 基本都封装好的接口,只需一两行代码就能完成,在实际项目开发中非常方便。


我们编程教室之前的“每周一坑”栏目里,和图像相关的题目基本都可以用 OpenCV-Python 来解决。


对这方面知识感兴趣的,可以找本数字图像处理的相关教材系统地看一遍,了解数字图像处理的基础。


除了基础功能,OpenCV 在代码附带的 Samples 里还提供了一些经典开发案例:


人脸检测


https://github.com/opencv/opencv/blob/master/samples/python/facedetect.py


使用方法


python facedetect.py


核心代码


cascade = cv.CascadeClassifier("haarcascade_frontalface_alt.xml")
rects = cascade.detectMultiScale(img, scaleFactor=1.3, minNeighbors=4, minSize=(30, 30), flags=cv.CASCADE_SCALE_IMAGE)


640.gif


此功能基于 Haar 分类器实现,项目中附带有训练好的分类器文件。此外,你还可以使用 OpenCV 训练针对其他目标特征的分类器。


我们之前的开发案例 Python送你一顶圣诞帽 就使用了 OpenCV-Python 的人脸识别代码。


姿态识别


https://github.com/opencv/opencv/blob/master/samples/dnn/openpose.py


使用方法


python openpose.py --model pose.caffemodel --proto pose.prototxt --dataset MPI


核心代码


net = cv.dnn.readNetFromCaffe(args.proto, args.model)
inp = cv.dnn.blobFromImage(frame, 1.0 / 255, (inWidth, inHeight), (0, 0, 0), swapRB=False, crop=False)
net.setInput(inp)
out = net.forward()


详情参见文章: 用 Python 实现抖音尬舞机


风格迁移


https://github.com/opencv/opencv/blob/master/samples/dnn/fast_neural_style.py


使用方法


python fast_neural_style.py --model starry_night.t7


核心代码


net = cv.dnn.readNetFromTorch(args.model)
net.setPreferableBackend(cv.dnn.DNN_BACKEND_OPENCV);
inp = cv.dnn.blobFromImage(frame, 1.0, (inWidth, inHeight), (103.939, 116.779, 123.68), swapRB=False, crop=False)
net.setInput(inp)
out = net.forward()


详情参见文章: Python+OpenCV 十几行代码模仿世界名画


以上便是 OpenCV-Python 的一些简单应用。OpenCV 官方 Samples 代码里还有很多有趣的例子(地址:https://github.com/opencv/opencv )更强大的功能也有待你在开发中逐步体会。


希望这篇管中窥豹的文章可以让各位对  OpenCV 和计算机视觉有一个初步的了解和直观的认识,进而共同参与到人工智能这场技术浪潮中来。



其他内容回复关键字:

python :零基础入门课程目录

新手 :初学者指南及常见问题

资源 :超过500M学习资料网盘地址

项目 :十多个进阶项目代码实例

如需了解视频课程及答疑群等更多服务,请号内回复 码上行动

代码相关问题可以在论坛上发帖提问 bbs.crossincode.com

推荐阅读:

爬抖音 | AI名画| 押韵工具 | 虎扑 | 如何debug | 苹果 | 查天气 | 我用Python | 知乎 | 排序 | 电影票 | 技术宅 | 单词表 | 新手建议 

目录
打赏
0
0
0
0
11
分享
相关文章
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
57 7
|
2天前
|
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
109 82
Python环境变量在开发和运行Python应用程序时起着重要的作用
Python环境变量在开发和运行Python应用程序时起着重要的作用
141 15
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
27 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
70 9
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
69 11
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
112 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
10天前
|
python泛微e9接口开发
通过POST请求向指定IP的API注册设备以获取`secrit`和`spk`。请求需包含`appid`、`loginid`、`pwd`等头信息。响应中包含状态码、消息及`secrit`(注意拼写)、`secret`和`spk`字段。示例代码使用`curl`命令发送请求,成功后返回相关信息。
33 5
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
337 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
Python的计算机视觉与图像处理
本文介绍了Python在计算机视觉和图像处理领域的应用,涵盖核心概念、算法原理、最佳实践及应用场景。重点讲解了OpenCV、NumPy、Pillow和Matplotlib等工具的使用,并通过代码实例展示了图像读写、处理和可视化的方法。实际应用包括自动驾驶、人脸识别、物体检测等。未来趋势涉及深度学习、边缘计算和量子计算,同时也讨论了数据不足、模型解释性和计算资源等挑战。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等