a.py
import cv2
img = cv2.imread("shape2.png") # 读取原始图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转为灰度图像
ret, binary = cv2.threshold(gray, 127, 225, cv2.THRESH_BINARY) # 二值化阈值处理
# 检测图像中出现的所有轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
hull = cv2.convexHull(contours[0]) # 获取轮廓的凸包
cv2.polylines(img, [hull], True, (0, 0, 255), 2) # 绘制凸包
cv2.imshow("img", img) # 显示图像
cv2.waitKey() # 按下任何键盘按键后
cv2.destroyAllWindows() # 释放所有窗体
b.py
import cv2
img = cv2.imread("flower.png") # 读取原图
r1 = cv2.Canny(img, 10, 50); # 使用不同的阈值进行边缘检测
r2 = cv2.Canny(img, 100, 200);
r3 = cv2.Canny(img, 400, 600);
cv2.imshow("img", img) # 显示原图
cv2.imshow("r1", r1) # 显示边缘检测结果
cv2.imshow("r2", r2)
cv2.imshow("r3", r3)
cv2.waitKey() # 按下任何键盘按键后
cv2.destroyAllWindows() # 释放所有窗体
c.py
import cv2
import numpy as np
img = cv2.imread("pen.jpg") # 读取原图
o = img.copy() # 复制原图
o = cv2.medianBlur(o, 5) # 使用中值滤波进行降噪
gray = cv2.cvtColor(o, cv2.COLOR_BGR2GRAY) # 从彩色图像变成单通道灰度图像
binary = cv2.Canny(o, 50, 150) # 绘制边缘图像
# 检测直线,精度为1,全角度,阈值为15,线段最短100,最小间隔为18
lines = cv2.HoughLinesP(binary, 1, np.pi / 180, 15, minLineLength=100, maxLineGap=18)
for line in lines: # 遍历所有直线
x1, y1, x2, y2 = line[0] # 读取直线两个端点的坐标
cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2) # 在原始图像上绘制直线
cv2.imshow("canny", binary) # 显示二值化边缘图案
cv2.imshow("img", img) # 显示绘制结果
cv2.waitKey() # 按下任何键盘按键后
cv2.destroyAllWindows() # 释放所有窗体
zuoye.py
import cv2
import numpy as np
img = cv2.imread("shape2.png") # 读取原始图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转为灰度图像
ret, binary = cv2.threshold(gray, 127, 225, cv2.THRESH_BINARY) # 二值化阈值处理
# 检测图像中出现的所有轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
hull = cv2.convexHull(contours[0]) # 获取轮廓的凸包
cv2.polylines(img, [hull], True, (0, 0, 255), 2) # 绘制凸包
a1 = cv2.resize(img,(200,200))
img = cv2.imread("flower.png") # 读取原图
a2 = cv2.Canny(img, 10, 50) # 使用不同的阈值进行边缘检测
a3 = cv2.Canny(img, 100, 200)
a4 = cv2.Canny(img, 400, 600)
a2 = cv2.resize(a2,(200,200))
a3 = cv2.resize(a3,(200,200))
a4 = cv2.resize(a4,(200,200))
a5 = cv2.resize(img,(200,200))
img = cv2.imread("pen.jpg") # 读取原图
o = img.copy() # 复制原图
o = cv2.medianBlur(o, 5) # 使用中值滤波进行降噪
gray = cv2.cvtColor(o, cv2.COLOR_BGR2GRAY) # 从彩色图像变成单通道灰度图像
binary = cv2.Canny(o, 50, 150) # 绘制边缘图像
# 检测直线,精度为1,全角度,阈值为15,线段最短100,最小间隔为18
lines = cv2.HoughLinesP(binary, 1, np.pi / 180, 15, minLineLength=100, maxLineGap=18)
for line in lines: # 遍历所有直线
x1, y1, x2, y2 = line[0] # 读取直线两个端点的坐标
cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2) # 在原始图像上绘制直线
a6 = cv2.resize(img,(200,200))
a7 = cv2.resize(binary,(200,200))
img = cv2.imread("pen.jpg") # 读取原图
a8 = cv2.resize(img,(200,200))
#img_h = np.hstack((dst1,dst1)) #水平拼接
#img_v = np.vstack((dst2,dst2)) #竖直拼接
#a1 = cv2.cvtColor(a1,cv2.COLOR_GRAY2BGR)
a2 = cv2.cvtColor(a2,cv2.COLOR_GRAY2BGR)
a3 = cv2.cvtColor(a3,cv2.COLOR_GRAY2BGR)
a4 = cv2.cvtColor(a4,cv2.COLOR_GRAY2BGR)
print(a1.shape,a2.shape,a3.shape,a4.shape)
a7 = cv2.cvtColor(a7,cv2.COLOR_GRAY2BGR)
print(a5.shape,a6.shape,a7.shape,a8.shape)
a = np.hstack((a1,a2,a3,a4))
b = np.hstack((a5,a6,a7,a8))
a = np.vstack((a,b))
cv2.imwrite("C:\\Users\\ASUS\\PycharmProjects\\pythonProject3\\Opencv\\13\\20040420.jpg", a)
cv2.imshow("20040420",a)