Python-OpenCV学习笔记

一、 cv2.imread

测试图片:timg.jpg
Python-OpenCV学习笔记_第1张图片
(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()

Python-OpenCV学习笔记_第2张图片

二、 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()

Python-OpenCV学习笔记_第3张图片

六、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()

你可能感兴趣的:(OpenCV)