内容来自于Learn X in Y Minutes: Scenic Programming Language Tours

一些opencv的基础使用方法,图形绘制,边缘检测,人像识别等。

对文档中的英文进行了一些翻译,添加了中文注释,方便学习

Opencv

OpenCV(开源计算机视觉)是一个主要针对实时计算机视觉的编程函数库。它最初由英特尔开发,后来由Willow Garage和Itseez(后来被英特尔收购)支持。Opencv目前支持多种语言,如C++,Python,Java等

安装

有关在计算机上安装 OpenCV 的信息,请参阅这些文章。

  • Windows 安装说明:https://opencv-python-tutroals.readthedocs.io/en/latest/py教程/pysetup/pysetupinwindows/pysetupinwindows.html#install-opencv-python-in-windows
  • Mac 安装说明((High Sierra):https://medium.com/@nuwanprabhath/installing-opencv-in-macos-high-sierra-for-python-3-89c79f0a246a
  • Linux 安装说明 (Ubuntu 18.04): Ubuntu 18.04: How to install OpenCV - PyImageSearch

在这里,我们将重点介绍OpenCV的python实现。

# opencv读取图片
import cv2
img = cv2.imread('cat.jpg')# 显示图片
# imshow() 函数用来显示图片
cv2.imshow('Image',img)
#你的第一个参数是窗口的标题,第二个参数是image#如果你得到了错误,对象类型None,你的图像路径可能是错误的。请重新检查图像路径
cv2.waitKey(0)
# waitKey()是一个键盘绑定函数,以毫秒为单位。对于GUI事件,必须使用waitKey()函数。
# waitKey()–是在一个给定的时间内(单位ms)等待用户按键触发;
# 如果用户没有按下键,则继续等待 (循环)
# 常见 : 设置 waitKey(0) , 则表示程序会无限制的等待用户的按键事件
# 一般在 imgshow 的时候 , 如果设置 waitKey(0) , 代表按任意键继续
# 2. 显示视频时,延迟时间需要设置为 大于0的参数
# delay > 0时 , 延迟 ”delay”ms , 在显示视频时这个函数是有用的 ,
# 用于设置在显示完一帧图像后程序等待 ”delay”ms 再显示下一帧视频 ;
# 如果使用 waitKey(0) 则只会显示第一帧视频# 用于将图像保存到指定的文件。
cv2.imwrite('catgray.png',img)
# 第一个变量是文件名,第二个是图片#将图像转换为灰度
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#从网络摄像头捕获视频
cap = cv2.VideoCapture(0)
#0是您的相机,如果您有多个相机,您需要输入它们的ID
while(True):# 逐帧捕获_, frame = cap.read()cv2.imshow('Frame',frame)#当用户按q ->退出时if cv2.waitKey(1) & 0xFF == ord('q'):break
#摄像机必须被释放
cap.release()#从文件播放视频
cap = cv2.VideoCapture('movie.mp4')
while(cap.isOpened()):_, frame = cap.read()#以灰度播放视频gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('frame',gray)if cv2.waitKey(1) & 0xFF == ord('q'):break
cap.release()#在OpenCV中绘制线条
# cv2.line(img,(x,y),(x1,y1),(color->r,g,b->0 到 255),厚度)
cv2.line(img,(0,0),(511,511),(255,0,0),5)#绘制矩形
#cv2.矩形(img,(x,y),(x1,y1),(颜色->r,g,b->0到255),厚度)
#厚度=-1,用于填充矩形
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)# 绘制圆形
# cv2.circle(img,(圆心x,圆心y), 半径, (color->r,g,b->0 to 255), 厚度)
cv2.circle(img,(200,90), 100, (0,0,255), -1)#绘制椭圆
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)# 添加文字
cv2.putText(img,"Hello World!!!", (10,50), cv2.FONT_HERSHEY_SIMPLEX, 2, 255)# 图像混合
img1 = cv2.imread('cat.png')
img2 = cv2.imread('openCV.jpg')
dst = cv2.addWeighted(img1,0.5,img2,0.5,0)#阈值图像
#二值阈值
_,thresImg = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
#自适应阈值
adapThres = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2)#模糊图像
#高斯模糊
blur = cv2.GaussianBlur(img,(5,5),0)
#中值模糊
medianBlur = cv2.medianBlur(img,5)#Canny边缘检测
img = cv2.imread('cat.jpg',0)
edges = cv2.Canny(img,100,200)#基于Haar级联的人脸检测
# Download Haar Cascades from https://github.com/opencv/opencv/blob/master/data/haarcascades/
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')img = cv2.imread('human.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)roi_gray = gray[y:y+h, x:x+w]roi_color = img[y:y+h, x:x+w]eyes = eye_cascade.detectMultiScale(roi_gray)for (ex,ey,ew,eh) in eyes:cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)cv2.imshow('img',img)
cv2.waitKey(0)cv2.destroyAllWindows()
#destroyAllWindows()销毁所有窗口。#如果要销毁特定窗口,请传递创建的窗口的确切名称。

仅供学习,不为商业用途,如有侵权,联系删

(翻译)在Y分钟学X:OpenCV (OpenCV入门)(中文注释)相关推荐

  1. 翻译:三分钟学懂JSON

    Understanding JSON: the 3 minute lesson 三分钟学懂JSON Two months ago you'd never heard of JSONIf you are ...

  2. Y分钟学clojure

    Clojure是运行在JVM上的Lisp家族中的一员.她比Common Lisp更强调纯函数式编程,且自发布时便包含了一组工具来处理状态. 这种组合让她能十分简单且自动地处理并发问题. (你需要使用C ...

  3. OpenCV开发笔记(七十二):红胖子8分钟带你使用opencv+dnn+tensorFlow识别物体

    本博客是转载的 本文章源博客地址:https://blog.csdn.net/qq21497936/article/details/109194717 各位读者,知识无穷而人力有穷,要么改需求,要么找 ...

  4. 小白学python(opencv模糊)

    小白学python(opencv模糊) 模糊 均值模糊 中值模糊 自定义模糊 高斯模糊 双边模糊 今天稍微学学模糊有关知识,发出来记录以一下. 模糊 #像的模糊是图像处理中比较常用和简单的处理手段之一 ...

  5. 30 分钟学 Erlang

    30 分钟学 Erlang (一) Shawn_xiaoyu https://www.jianshu.com/p/b45eb9314d1e 本文写给谁看的? 那些已经有过至少一门编程语言基础,并且需要 ...

  6. OpenCV基础入门系列基本操作——贰

    系列博文第二篇,关于OpenCV4的一些基本操作和使用. 博文主要以实例展示不同的函数使用方法. OpenCV基础入门系列基本操作--壹 前言 下述为本博文需要用到的各类头文件以及全局变量等 读者可根 ...

  7. C/C++ vs2017 OpenCV简单入门

    离职之际,自学一下图像相关的知识点,只是简单学了一点皮毛! 目录 一. OpenCV环境搭建 二.使用opencv 常用接口说明 使用案例 1. 图像色彩空间转换 2. Mat对象的创建与赋值 3.  ...

  8. OpenCV Java入门二 在Windows10系统上安装OpenCV

    准备好痛苦了没有? 痛苦之后是欢乐.因为必竟大多人还是用的WINDOWS来开发的居多.因此如果OpenCV无法在Win10下安装,一样不能起到普及作用. 而Windows下的编译安装OpenCV也是最 ...

  9. OpenCV 编程入门

    OpenCV 编程入门 美国伊力诺理工学院计算机科学系Gady Adam 翻译:Mensch 2006年11月22日 内容 简介 OpenCV概述 资料链接 OpenCV 命名约定 编译命令 C程序实 ...

最新文章

  1. JNI学习开始篇 基础知识 数据映射及学习资料收集
  2. CentOS、Ubuntu、Gentoo
  3. split函数python 未定义_python split函数基本用法
  4. python网络模型的保存与加载
  5. python 字符集转换-灰常慢
  6. 小米10T系列新机曝光:后置64MP三摄 辨识度超高
  7. Spring Boot
  8. 是妄言还是实话 云电脑将代替传统PC?
  9. 用类描述计算机CPU的速度和硬件的容量
  10. 《西部世界》暗示了大数据人工智能什么
  11. 常用的大功率电阻有哪些,电阻功率降额设计要注意什么
  12. Java swing + socket 写的一个五子棋网络对战游戏
  13. 几则小故事(网上收集)
  14. matlab中清除command window的命令是什么?
  15. Codeforces暑期训练周报(7.21~7.27)
  16. 八年成就开发梦——IT精英中的活雷锋郭红俊
  17. c语言butter函数,butter函数
  18. 管理信息系统【二】之 管理信息系统与组织变革
  19. PC Building Simulator Steam版、WeGame版、游侠版、3DM版、破解版 有啥区别
  20. 安装jdk8出现无法定位程序输入点regdeletekeyexa于动态链接库ADVAPI32.dll上

热门文章

  1. CCF2017.3.1分蛋糕
  2. 393分上岸南昌大学信息工程学院软件工程专硕
  3. IDEA出现java: 错误: 不支持发行版本 15
  4. 汽车散热器不同造型的注塑件管口密封方案
  5. 第四类互联网交互模式──威客模式
  6. 计算机云压卸载不了,电脑软件卸载不掉怎么办
  7. 漏洞通告 | ​Apache Spark UI命令漏洞;Grails远程代码漏洞;Confluence Questions漏洞
  8. 微软预告:下一代 Windows 将很快宣布
  9. USBKEY全解析---证书导入(java)
  10. Java中的抽象方法是什么,怎么用?