Python-OpenCV学习笔记

一、 cv2.imread

测试图片:timg.jpg
在这里插入图片描述
(1)cv2读取并显示

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('timg.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
程序解释
cv2.read(image file, parms)读取图片,对于第二个参数 ,颜色为1,灰度为0,不变为-1
cv2.imshow(title,image)显示图像
cv2.waitKey(0)等待,直到有任何按键被按下
cv2.destroyAllWindows()关闭所有窗口

(2)cv2读取,matplotlib显示并标注

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('watch.jpg',cv2.IMREAD_GRAYSCALE)

plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.plot([200,300,400],[100,200,300],'c', linewidth=5)
plt.show()

在这里插入图片描述

二、 cv2.VideoCapture

(1)读取网络摄像头视频并处理,显示

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
 # 启动了一个无限循环(稍后将被break语句打破)
while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
 
    cv2.imshow('frame',gray)
    # 按键q退出while循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
程序解释
cv2.VideoCapture(0)从计算机上的第一个网络摄像头返回视频,,参数也可设置为视频路径
cap.read()ret是一个表示是否有返回的布尔值,frame是返回的帧, 如果没有帧,你不会得到错误,你会得到None
cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)转换帧为灰度,大多数计算机应用程序读取为 RGB,但OpenCV为 BGR
cv2.imshow(‘frame’,gray)尽管是视频流,我们仍然使用imshow,因为frame原则上为图片
cap.release()释放网络摄像头
cv2.destroyAllWindows()关闭所有的imshow()窗口

(2)录制,并将录制内容保存到新文件中

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))

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

cap.release()
out.release()
cv2.destroyAllWindows()
程序解释
cv2.VideoWriter_fourcc(*‘XVID’)XVID编码器
cv2.VideoWriter(‘output.avi’,fourcc, 20.0, (640,480))解码器,定义保存文件名、编码器、帧率、视频宽高
out.write()利用解码器往文件output.avi输出帧
out.release()释放解码器

注:如果使用视频而不是网络摄像头作为源,则 cv2.VideoCapture()中的参数可以为视频指定文件路径,而不是摄像头号码

三、cv2.rectangle,ccv2.putText

import numpy as np
import cv2

img = cv2.imread('timg.jpg',cv2.IMREAD_COLOR)
cv2.rectangle(img,(425,17),(870,492),(0,0,255),1)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

import numpy as np
import cv2

img = cv2.imread('timg.jpg',cv2.IMREAD_COLOR)
cv2.rectangle(img,(425,17),(870,492),(0,0,255),1)
font = cv2.FONT_HERSHEY_SIMPLEX                    # 定义字体
cv2.putText(img,'captain Teemo',(425,50), font, 1, (0,0,255), 2, cv2.LINE_AA)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

程序解释
cv2.rectangle接受以下参数:图片,左上角坐标,右下角坐标,线条颜色(BGR),线条粗细,若粗细为-1将填充对象
cv2.putText在图像上写字,

四、img[:,:]

在图片或视频帧中每个像素都有一个坐标位置,每个像素都由颜色通道组成

import cv2
import numpy as np
img = cv2.imread('timg.jpg',cv2.IMREAD_COLOR)
# 引用特定像素
px = img[55,55]
# 修改像素值
img[55,55] = [255,255,255]
# 修改ROI(感兴趣区域)
img[100:150,100:150] = [255,255,255]
# 图像的属性
print(img.shape)
print(img.size)
print(img.dtype)

五、cv2.threshold

灰度图元素二值化,大于127赋值255,否则赋值0

import cv2
import numpy as np

img = cv2.imread('timg.jpg',0)
retval, threshold = cv2.threshold(img,127, 255, cv2.THRESH_BINARY)
#cv2.imshow('original',img)
cv2.imshow('threshold',threshold)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

六、cv2.resize

改变图片大小

import cv2
import numpy as np

img = cv2.imread('timg.jpg')
# 先宽度后高度
new_img=cv2.resize(img,(224,224))
cv2.imshow('new',new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值