openCV学习笔记(二)---openCV系列基本操作

基本操作一:用内置的函数画一些带图形。

import cv2
import numpy as np
# 创建一个背景图片
img=np.zeros((512,512,3),np.uint8)
# 画一条厚度为5的直线。
img=cv2.line(img,(0,0),(511,511),(255,0,0),5)
#             起点坐标 终点坐标   线条颜色 厚度
# 画矩形
img=cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
# 画圆
img=cv2.circle(img,(447,63),63,(0,0,255),-1)
# 画椭圆
img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
# 画多边形polygon
# 给出一系列定点的坐标,放在一个数组里面
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255))

# 向图片添加文字
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

cv2.imshow('functionDemo',img)
cv2.waitKey()
cv2.destroyAllWindows()

基本操作之二:鼠标回调事件绑定

import cv2
import numpy as np
events = [i for i in dir(cv2) if 'EVENT' in i]
print(events)
# 打印所有事件
# [
#   'EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON',
#   'EVENT_FLAG_MBUTTON', 'EVENT_FLAG_RBUTTON', 'EVENT_FLAG_SHIFTKEY',
#   'EVENT_LBUTTONDBLCLK', 'EVENT_LBUTTONDOWN', 'EVENT_LBUTTONUP',
#   'EVENT_MBUTTONDBLCLK', 'EVENT_MBUTTONDOWN', 'EVENT_MBUTTONUP',
#   'EVENT_MOUSEHWHEEL', 'EVENT_MOUSEMOVE', 'EVENT_MOUSEWHEEL',
#   'EVENT_RBUTTONDBLCLK', 'EVENT_RBUTTONDOWN', 'EVENT_RBUTTONUP'
#  ]

# mouse callback function
# 创建鼠标回调含糊的格式是特定的,唯一的区别就是函数内部的具体实现
def draw_circle(event,x,y,flags,param):
    # 在你双击的地方画一个圆,半径100px,
    if event == cv2.EVENT_LBUTTONDBLCLK:
        cv2.circle(img,(x,y),100,(255,0,0),-1)
# 第一个参数:对应的事件
# 第二个参数:事件发生的横坐标
# 第三个参数:事件发生的纵坐标
# 后面两个用到再补充。
# 函数内部:鼠标在什么地方双击,就以哪个点为圆心画一个圆。

# Create a black image, a window and bind the function to window
img = np.zeros((512,512,3), np.uint8)
# 创建一个黑色的image
cv2.namedWindow('image')
# 创建一个名字为image的window
cv2.setMouseCallback('image',draw_circle)
# 把window和鼠标回调函数绑定。

while(1):
    cv2.imshow('image',img)
    if cv2.waitKey(20) & 0xFF == 27:
        break
cv2.destroyAllWindows()

基本操作之三:播放视频(官网还有一个调用camera,但是我的camera坏了,所以就没有成功。)

import numpy as np
import cv2

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

cap = cv2.VideoCapture('test.mp4')

while(cap.isOpened()):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

我神仙姐姐是真的美。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值