open cv学习 (十)图形检测

图形检测

demo1
python 复制代码
# 绘制几何图像的轮廓
import cv2

img = cv2.imread("./shape1.png")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 将图像二值化
t, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 检测图像中的所有轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

cv2.drawContours(img, contours, 3, (0, 0, 255), 5)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
demo2
python 复制代码
# 绘制花朵的轮廓
import cv2

img = cv2.imread("flower.png")

cv2.imshow("img", img)
img = cv2.medianBlur(img, 5)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
t, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

cv2.imshow("binary", binary)

contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
cv2.drawContours(img, contours, -1, (0, 0, 255), 2)
cv2.imshow("contours", img)
cv2.waitKey()
cv2.destroyAllWindows()
demo3
python 复制代码
import cv2
# 矩形包围框

img = cv2.imread("./shape2.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
t, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
# 获取第一个轮廓的最小矩形边框
x, y, w, h = cv2.boundingRect(contours[0])
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
demo4
python 复制代码
import cv2
# 圆形包围框
img = cv2.imread("./shape2.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
t, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
# 获取第一个轮廓的最小矩形边框
center, radius = cv2.minEnclosingCircle(contours[0])
x = int(round(center[0]))
y = int(round(center[1]))
cv2.circle(img, (x, y), int(radius), (0, 0, 255), 2)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
demo5
python 复制代码
import cv2
# 凸包
img = cv2.imread("./shape2.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
t, binary = cv2.threshold(gray, 127, 255, 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()
demo6
python 复制代码
# Canny边缘检测
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()
demo7
python 复制代码
# 检测笔图像中出现的直线
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)

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()
demo8
python 复制代码
# 圆环检测
import cv2
import numpy as np

img = cv2.imread("coin.jpg")

o = img.copy()
o = cv2.medianBlur(o, 5)
gray = cv2.cvtColor(o, cv2.COLOR_BGR2GRAY)

circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 70, param1=100, param2=25, minRadius=10, maxRadius=50)
circles = np.uint(np.around(circles))
for c in circles[0]:
    x, y, r = c
    cv2.circle(img, (x, y), r, (0, 0, 255), 3)
    cv2.circle(img, (x, y), 2, (0, 0, 255), 3)

cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
相关推荐
(❁´◡`❁)Jimmy(❁´◡`❁)37 分钟前
Exgcd 学习笔记
笔记·学习·算法
云小逸2 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
盐焗西兰花4 小时前
鸿蒙学习实战之路-Reader Kit构建阅读器最佳实践
学习·华为·harmonyos
xsc-xyc5 小时前
RuntimeError: Dataset ‘/data.yaml‘ error ❌ ‘_lz
人工智能·深度学习·yolo·计算机视觉·视觉检测
深蓝海拓5 小时前
PySide6从0开始学习的笔记(二十七) 日志管理
笔记·python·学习·pyqt
慎独4135 小时前
科学赋能,让孩子专注高效爱上学习
学习
LGL6030A5 小时前
Java学习历程26——线程安全
java·开发语言·学习
学历真的很重要6 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程管理(详解版)
学习·职场和发展·系统架构·系统架构师
Nebula_g6 小时前
线程进阶: 无人机自动防空平台开发教程(更新)
java·开发语言·数据结构·学习·算法·无人机
星爷AG I6 小时前
9-28 视觉工作记忆(AGI基础理论)
人工智能·计算机视觉·agi