问题
最近在学习图像处理方面的东西,于是找了一些小任务,进行锻炼,对于这个黑白图片,白色部分单独取出并分别保存的做法,发现网上很少有类似的,于是便写下了这篇文章。
思路介绍
我的思路是首先通过**cv2.findContours()**所有白色部分的contours,也即轮廓的坐标点集合,然后通过重新新建一个图片,将以坐标填充到新建的图片内,其余都填充黑色,最后加以保存,便得到了想要的白色独立图片。
附上我的代码
import os
import numpy as np
import cv2
def cut(lenth, contours, mask, h, w):
x_data = [0 for i in range(lenth)] # 以contours的大小为数组的大小,便于后续操作
y_data = [0 for i in range(lenth)]
for i in range(lenth):
x_data[i] = contours[i][0][0] # x坐标赋值,至于为何这样,可以打印contours便可发现其中道理
for i in range(lenth):
y_data[i] = contours[i][0][1]
max_x = max(x_data) # 这里是为了方便取出来的部分有一定的黑边包裹
min_x = min(x_data)
max_y = max(y_data)
min_y = min(y_data)
if max_y+5>=h:
max_y = h
else