一、Section1
1.basic_functions.py
代码:
#pylint:disable=no-member
import cv2 as cv
#读取原图
# Read in an image
img = cv.imread('F:\opencv-course-master\Resources/Photos/park.jpg')
cv.imshow('Park', img)
#将图片转换为灰度
# Converting to grayscale
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('Gray', gray)
#进行模糊处理
# Blur
blur = cv.GaussianBlur(img, (7,7), cv.BORDER_DEFAULT)
cv.imshow('Blur', blur)
#边缘检测
# Edge Cascade
canny = cv.Canny(blur, 125, 175)
cv.imshow('Canny Edges', canny)
#膨胀
# Dilating the image
dilated = cv.dilate(canny, (7,7), iterations=3)
cv.imshow('Dilated', dilated)
#腐蚀
# Eroding
eroded = cv.erode(dilated, (7,7), iterations=3)
cv.imshow('Eroded', eroded)
调整图片的尺寸
# Resize
resized = cv.resize(img, (500,500), interpolation=cv.INTER_CUBIC)
cv.imshow('Resized', resized)
#裁剪
# Cropping
cropped = img[50:200, 200:400]
cv.imshow('Cropped', cropped)
cv.waitKey(0)
2.contours.py
#pylint:disable=no-member
import cv2 as cv
import numpy as np
#读取图片文件
img = cv.imread('F:\opencv-course-master/Resources/Photos/cats.jpg')
cv.imshow('Cats', img)
#显示blank空白窗口
blank = np.zeros(img.shape, dtype='uint8')
cv.imshow('Blank', blank)
#转为灰度图
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('Gray', gray)
#模糊处理
blur = cv.GaussianBlur(gray, (5,5), cv.BORDER_DEFAULT)
cv.imshow('Blur', blur)
#边缘检测
canny = cv.Canny(blur, 125, 175)
cv.imshow('Canny Edges', canny)
# ret, thresh = cv.threshold(gray, 125, 255, cv.THRESH_BINARY)
# cv.imshow('Thresh', thresh)
contours, hierarchies = cv.findContours(canny, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
print(f'{len(contours)} contour(s) found!')
cv.drawContours(blank, contours, -1, (0,0,255), 1)
cv.imshow('Contours Drawn', blank)
cv.waitKey(0)
3.draw.py
#pylint:disable=no-member
import cv2 as cv
import numpy as np
#生成空白窗口
blank = np.zeros((500,500,3), dtype='uint8')
cv.imshow('Blank', blank)
# 1. Paint the image a certain colour
blank[200:300, 300:400] = 0,0,255
cv.imshow('Green', blank)
# 2. Draw a Rectangle
cv.rectangle(blank, (0,0), (blank.shape[1]//2, blank.shape[0]//2), (0,255,0), thickness=-1)
cv.imshow('Rectangle', blank)
# 3. Draw A circle
cv.circle(blank, (blank.shape[1]//2, blank.shape[0]//2), 40, (0,0,255), thickness=-1)
cv.imshow('Circle', blank)
# 4. Draw a line
cv.line(blank, (100,250), (300,400), (2