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

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

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

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

Opencv

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

安装

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

在这里,我们将重点介绍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()销毁所有窗口。

#如果要销毁特定窗口,请传递创建的窗口的确切名称。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值