python中图像常规操作

本文介绍了使用OpenCV库在Python中从图像中提取轮廓,并基于特定条件裁剪出符合条件的区域的过程。通过cv2模块的函数,如imdecode、cvtColor、threshold和findContours等,实现图像处理并生成裁剪后的图像列表。
摘要由CSDN通过智能技术生成
import cv2
import numpy as np

img_list = []
image = cv2.imdecode(np.fromfile("E:/DIRPIC/pic/camera/111.png", dtype=np.uint8), -1)

if len(image.shape) == 3:
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
else:
    gray = image

_, binary = cv2.threshold(gray, 80, 255, cv2.THRESH_BINARY)

contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

drawing = np.zeros_like(binary)
cv2.drawContours(drawing, contours, -1, 255, 2)  # 最后两个参数分别为颜色和线宽

contours2 = sorted(contours, key=lambda i: len(i), reverse=True)


contour_total = []
for cnt in contours2:
    contour_total.extend(cnt) if cnt.shape[0] >= 1500 else None

x_top, y_top, w, h = cv2.boundingRect(np.array(contour_total))

img_crop = image[y_top:y_top + h, x_top:x_top + w].copy()

img_list.append(cv2.resize(img_crop, (256, 256)))



cv2.destroyAllWindows()

从图像中提取并裁剪出符合指定条件的轮廓区域,并将裁剪后的图像添加到 img_list 列表中。

首先,代码使用 cv2.imdecode() 函数读取图像文件,并根据文件路径创建一个图像对象 image

然后,通过判断 image 的维度数来确定是否需要将图像转换为灰度图像。如果图像是彩色图像(维度数为3),则使用 cv2.cvtColor() 函数将图像转换为灰度图像;否则,将 image 赋值给灰度图像变量 gray

接下来,使用 cv2.threshold() 函数对灰度图像 gray 进行阈值处理,将图像转换为二值图像 binary

然后,使用 cv2.findContours() 函数找到二值图像中的轮廓。返回的轮廓列表存储在 contours 变量中。

接下来,创建一个与二值图像大小相同的空白图像 drawing,并使用 cv2.drawContours() 函数将轮廓绘制在 drawing 上。

然后,对轮廓列表 contours 进行排序,按照轮廓长度降序排列,存储在 contours2 变量中。

接下来,通过遍历 contours2 中的轮廓,将点数大于等于 1500 的轮廓的点集合并到 contour_total 中。

然后,使用 cv2.boundingRect() 函数计算 contour_total 的边界框位置信息,并将结果存储在变量 x_topy_topw 和 h 中。

最后,根据边界框位置信息,使用切片操作从原始图像 image 中提取出裁剪后的图像区域,并使用 cv2.resize() 函数将裁剪后的图像调整为大小为 (256, 256) 的图像,并将其添加到 img_list 列表中。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值