数字图像处理4

预处理------ROI------形态学处理

形态学处理

形态学变化只能在二值图上处理

1.腐蚀Erode

对kernel映射的区域做与操作,包括自己在内如果有0则中间赋值成0

2.膨胀Dilate

对kernel映射的区域做或操作,包括自己在内如果有1则中间赋值成1

3.其他操作

开操作:先腐蚀后膨胀(消除小区域并分离物体而不影响原来图像)

闭操作:先膨胀后腐蚀(填充物体内部的小孔,除去小黑点而不影响原来图像)

形态学梯度运算:膨胀和腐蚀的图像相减

顶帽:原图像-开操作后图像(获取噪声或者边缘信息)

顶帽:原图像-闭操作后图像

轮廓操作

Canny轮廓提取

python 复制代码
im_for_read=R"D:\AAAproject\PYproject\EXPERuse\zaosheng.jpg"
img=cv2.imread(im_for_read,-1)
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray_image, threshold1=150, threshold2=200)
cv2.imshow("edges", edges)
cv2.waitKey(0)

cv2.findContours()

python 复制代码
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

提取出来的轮廓需要被数字化的,所以要查找轮廓在哪些地方,

第一个参数是已经被提取轮廓后的图像

第二个参数是提取模式

cv2.RETR_EXTERNAL: 只检索最外层的轮廓

cv2.RETR_TREE: 检索所有轮廓,并重构轮廓之间的完整层次结构

cv2.RETR_LIST: 检索所有轮廓但不分层次结构。

第三个参数是轮廓近似方法

cv2.CHAIN_APPROX_SIMPLE: 压缩水平、垂直和对角方向的元素,只保留端点。例如,一个直立的矩形轮廓只需存储四个点。

cv2.CHAIN_APPROX_NONE: 存储所有的轮廓点。

cv2.drawContours()

python 复制代码
cv2.drawContours(image, contours, -1, (0, 255, 0), 3)

那么在提取完轮廓之后需要进行加强,

第一个参数是要被画轮廓的图像

第二个参数是cv2.findContours()找到的轮廓

第三个参数是要绘制的轮廓的索引,-1则全绘制

第四个参数是绘制轮廓的颜色,用brg表示

第五个参数是轮值轮廓线的厚度(-1是填充)

计算轮廓的周长和面积

python 复制代码
# 假设 contours 是 cv2.findContours() 找到的轮廓列表
for cnt in contours:
    # 计算每个轮廓的周长 (假设是闭合的)
    perimeter = cv2.arcLength(cnt, True)
    print(f"轮廓周长: {perimeter}")

第一个参数是counters[i]

第二个参数是轮廓是否闭合

python 复制代码
# 假设 contours 是 cv2.findContours() 找到的轮廓列表
for cnt in contours:
    # 计算每个轮廓的面积
    area = cv2.contourArea(cnt)
    print(f"轮廓面积: {area}")

面积第二个参数可选是否返回带符号的面积值

外接形拟合

外接矩形

python 复制代码
x, y, w, h = cv2.boundingRect(contour)

可用来判断图形的大致形状

还有最小外接矩形

python 复制代码
rotated_rect = cv2.minAreaRect(contour)

返回值是一个center坐标,width,higth,angle

外接圆形

python 复制代码
(center, radius) = cv2.minEnclosingCircle(contour)

可以用来求中心坐标

其他轮廓形状

凸包,多边形

绘图操作

画线 画圆 画多边形(可直接放入最适多边形输出)

python 复制代码
cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
  • img: 要在其上绘图的图像。
  • pt1: 线条起点的坐标 (x, y)。
  • pt2: 线条终点的坐标 (x, y)。
  • color: 线条的颜色(对于RGB图像,使用BGR格式,如 (255, 0, 0) 表示蓝色)。
  • thickness: 可选参数,线条的粗细(默认为1)
python 复制代码
cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])

画文本

  • img: 要在其上绘图的图像。
  • center: 圆心位置的坐标 (x, y)。
  • radius: 圆的半径。
  • color: 圆的颜色(对于RGB图像,使用BGR格式,如 (0, 255, 0) 表示绿色)。
  • thickness: 可选参数,线条的粗细。若为负值(如 cv2.FILLED),则填充整个形状。
python 复制代码
cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
  • img: 要在其上添加文本的图像。
  • text: 要显示的字符串。
  • org: 文本左下角的坐标 (x, y)。
  • fontFace: 字体类型(如 cv2.FONT_HERSHEY_SIMPLEX, cv2.FONT_HERSHEY_COMPLEX 等)。
  • fontScale: 字体大小比例因子。如果值大于1,则字体放大;小于1则缩小。
  • color: 文本的颜色(对于RGB图像,使用BGR格式,如 (255, 0, 0) 表示蓝色)。
  • thickness: 可选参数,线条的粗细(默认为1)。
  • lineType: 可选参数,与画线时相同,可选择 cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA (抗锯齿线条)。
  • bottomLeftOrigin: 可选参数,当值为True时,文本的原点是在左下角,否则(默认)在左上角。
相关推荐
SEOETC17 分钟前
数字人技术:虚实交融的未来图景正在展开
人工智能
boonya30 分钟前
从阿里云大模型服务平台百炼看AI应用集成与实践
人工智能·阿里云·云计算
amhjdx33 分钟前
三维技术 + AI 动画,焕活古镇科技人文新表达,天南文化助力 2025 年世界互联网大会乌镇峰会
人工智能·科技
鹿子沐42 分钟前
LLamaFactory模型导出量化
人工智能·语言模型
skywalk81631 小时前
尝试Auto-coder.chat使用星河社区AIStudio部署的几个大模型:文心4.5-21b、Deepseek r1 70b、llama 3.1 8b
linux·服务器·人工智能·大模型·aistudio
鹿子沐1 小时前
LlamaFactory微调效果与vllm部署效果不一致
人工智能·llama
Akamai中国1 小时前
AI 边缘计算:决胜未来
人工智能·云计算·边缘计算·云服务
陈增林1 小时前
基于PyQt5的AI文档处理工具
人工智能
BeingACoder1 小时前
【SAA】SpringAI Alibaba学习笔记(二):提示词Prompt
java·人工智能·spring boot·笔记·prompt·saa·springai
Acrelhuang2 小时前
覆盖全场景需求:Acrel-1000 变电站综合自动化系统的技术亮点与应用
大数据·网络·人工智能·笔记·物联网