opencv库基础知识整理【未完】

opencv学习

资源:2020最新-3h精通Opencv

Chapter0、安装

pip install opencv-python

安装成功
在这里插入图片描述
在这里插入图片描述

Chapter1、读取照片视频和摄像头——Read Images Videos and Webcams

(1)cv2.imread 读取照片并显示

import cv2

img = cv2.imread(r'E:\Pictures\dir2\han2.png')  # 读取照片到img

cv2.imshow('Output', img)  # 显示照片 ("名字", 要显示的照片)
cv2.waitKey(0)  # 0=infinite delay;如果是1则是1milliseconds

在这里插入图片描述

(2)cv2.VideoCapture 读取视频并显示

import cv2

cap = cv2.VideoCapture(r'E:\Pictures\蝙蝠侠.mp4')  # 选取视频路径

# we need a while loop to go through each frame one by one
while True:  # 使用循环读取
    success, img = cap.read()  # 将cap的图片一个一个赋值给img
    cv2.imshow("Video", img)  # img显示出来
    if cv2.waitKey(1) & 0xFF == ord('q'):  # 当按下q结束循环
        break

在这里插入图片描述

(3)cv2.VideoCapture 调用摄像头并显示实时视频

import cv2

cap = cv2.VideoCapture(0)  # 写摄像头的ID, 默认为0
cap.set(3, 640)  # 长(ID=3)=640
cap.set(4, 480)  # 宽(ID=4)=480
cap.set(10, 100)  # 改变亮度(ID=10)

# we need a while loop to go through each frame one by one
while True:  # 使用循环读取
    success, img = cap.read()  # 将cap的图片一个一个赋值给img
    cv2.imshow("Video", img)  # img显示出来
    if cv2.waitKey(1) & 0xFF == ord('q'):  # 当按下q结束循环
        break

在这里插入图片描述

Chapter2、基础函数——Basic Functions

(1)cv2.cvtColor-读取灰度图

import cv2

img = cv2.imread(r'E:\Pictures\dir2\han2.png')  # 读取照片

# 在opencv中照片是BGR
# cvtColor=converts(转化) image into different color spaces
# BGR to GRAY
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cv2.imshow("Gray Image", imgGray)
cv2.waitKey(0)

在这里插入图片描述

(2)cv2.GaussianBlur-blur增加模糊度

import cv2

img = cv2.imread(r'E:\Pictures\dir2\han2.png')  # 读取照片

imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# (7, 7): kernal size(卷积):odd number
imgBlur = cv2.GaussianBlur(imgGray, (7, 7), 0)

cv2.imshow("Gray Image", imgGray)  # 原版:进行对比
cv2.imshow("Blur Image", imgBlur)  # 模糊版
cv2.waitKey(0)

在这里插入图片描述

(3)cv2.Canny:edge detector-边缘探测

import cv2

img = cv2.imread(r'E:\Pictures\dir2\han2.png')  # 读取照片

imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
imgBlur = cv2.GaussianBlur(imgGray, (7, 7), 0)
imgCanny = cv2.Canny(img, 150, 200)  # 值越大边缘越模糊

cv2.imshow("Gray Image", imgGray)  # 原版:进行对比
cv2.imshow("Blur Image", imgBlur)  # 模糊版
cv2.imshow("Canny Image", imgCanny)  # 识别边缘
cv2.waitKey(0)
imgCanny = cv2.Canny(img, 100, 100)

在这里插入图片描述

imgCanny = cv2.Canny(img, 150, 200)  # 值越大边缘越模糊

在这里插入图片描述

(4)dialation(膨胀,扩张):cv2.dilate 增加边缘的厚度(用到numpy)-变厚!

numpy:a library that helps us deal with matrices
install first:
在这里插入图片描述

import cv2
import numpy as np

img = cv2.imread(r'E:\Pictures\dir2\han2.png')  # 读取照片
# kernel:矩阵,定义大小和值
kernel = np.ones((5, 5), np.uint8)  # 用numpy创建kernel:values=1
#                 大小     类型:unsigned integer of 8-bit。values range from 0-255

imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
imgBlur = cv2.GaussianBlur(imgGray, (7, 7), 0)
imgCanny = cv2.Canny(img, 150, 200)
# iterations叠代次数
# 在显示边缘的基础上扩大边缘
imgDialation = cv2.dilate(imgCanny, kernel, iterations=1)


cv2.imshow("Gray Image", imgGray)  # 原版:进行对比
cv2.imshow("Blur Image", imgBlur)  # 模糊版
cv2.imshow("Canny Image", imgCanny)  # 边缘
cv2.imshow("Dialation Image", imgDialation)  # 边缘膨胀扩大

cv2.waitKey(0)

imgDialation = cv2.dilate(imgCanny, kernel, iterations=1)  # 叠代次数为1

在这里插入图片描述

imgDialation = cv2.dilate(imgCanny, kernel, iterations=5)  # 叠代次数为5

在这里插入图片描述

(5)erosion(降低):cv2.erode-边缘变细!

import cv2
import numpy as np

img = cv2.imread(r'E:\Pictures\dir2\han2.png')  # 读取照片
# kernel:矩阵,定义大小和值
kernel = np.ones((5, 5), np.uint8)  # 用numpy创建kernel:values=1
#                 大小     类型:unsigned integer of 8-bit。values range from 0-255

imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
imgBlur = cv2.GaussianBlur(imgGray, (7, 7), 0)
imgCanny = cv2.Canny(img, 150, 200)
imgDialation = cv2.dilate(imgCanny, kernel, iterations=1)
imgEroded = cv2.erode(imgDialation, kernel, iterations=1)  # 变细


cv2.imshow("Gray Image", imgGray)  # 原版:进行对比
cv2.imshow("Blur Image", imgBlur)  # 模糊版
cv2.imshow("Canny Image", imgCanny)  # 边缘
cv2.imshow("Dialation Image", imgDialation)  # 边缘膨胀扩大
cv2.imshow("Eroded Image", imgEroded)  # 边缘变细

cv2.waitKey(0)

在这里插入图片描述

Chapter3、调整大小和裁剪——RESIZING AND CROPPING

(0)问题!!

  • 相同的代码为什么png不报错,jpg报错?!!
import cv2
import numpy as np

img = cv2.imread('./粉色.jpg')

cv2.imshow('Image', img)

cv2.waitKey(0)

在这里插入图片描述

(1)cv2.resize-改变图片大小

import cv2
import numpy as np

img = cv2.imread(r'E:\Pictures\dir2\han2.png')
# ↓返回shape来得知图片的大小:(900, 1600, 3)=(高,宽,ChannelNumber=3(BGR))
print(img.shape)

#                            ↓长  ↓高/宽
imgResize = cv2.resize(img, (500, 300))  # 改变大小
print(imgResize.shape)

cv2.imshow('Image', img)
cv2.imshow('Image Resize', imgResize)

cv2.waitKey(0)

在这里插入图片描述

(2)crop:imgCropped = img[, ]-剪裁

import cv2
import numpy as np

img = cv2.imread(r'E:\Pictures\dir2\han2.png')
print(img.shape)

#                            ↓长  ↓高/宽
imgResize = cv2.resize(img, (500, 300))  # 改变大小
print(imgResize.shape)

#               ↓高/宽     ↓长
imgCropped = img[0:200, 200:500]  # 裁剪

cv2.imshow('Image', img)
# cv2.imshow('Image Resize', imgResize)
cv2.imshow('Image Cropped', imgCropped)

cv2.waitKey(0)

在这里插入图片描述

2020.8.3 周日 上午更新在这里插入图片描述


Chater4、形状和文本-SHAPES AND TEXTS

未学完!!

import cv2
import numpy as np

# 512*512pixels/boxes+,3=0-255
img = np.zeros((512, 512, 3), np.uint8)
# print(img)
# img[200:300, 100:300] = 255, 0, 0  # 蓝色

cv2.line(img, (0, 0), (img.shape[1], img.shape[0]), (0, 255, 0), 3)
cv2.rectangle(img, (0, 0), (250, 350), (0, 0, 255), 2)  # 最后的2改成cv2.FILLED填充
cv2.circle(img, (400, 50), 30, (255, 255, 0), 5)
#          ↓照片   ↓内容      ↓起始位置    ↓字体                    ↓scale ↓颜色     ↓粗细
cv2.putText(img, "Esther", (300, 100), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 150, 0), 1)

cv2.imshow("Image", img)

cv2.waitKey(0)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43232564/article/details/107769167
今日推荐