opencv灰度处理,opencv读取灰度图
本文主要介绍了如何利用开放计算机视觉实现从灰度图像,根据阈值,切出多个前景区域,过滤面积太小的图像。文中的示例代码讲解详细,需要的可以参考一下
从灰度图像,根据阈值,切出多个前景区域,过滤面积太小的图像。
开放计算机视觉的大蟒逻辑,剪辑_灰色_补丁:
def clip_gray_patches(img_gray,ths=32,filter_percent=0.0005):
从灰度图像切出多个前景区域,阈值大于这,过滤面积占比小于过滤器百分比的图像
@param img_gray:灰度图像
@param ths:前景阈值
@参数过滤器百分比:过滤面积
@return:补丁列表,轮廓图像
# 根据阈值值过滤面具
ret,gray _ mask=cv2。阈值(img _ gray,ths,1,0)
轮廓,层次=cv2。寻找轮廓(灰色_蒙版,cv2 .获得文件树,cv2 .CHAIN_APPROX_SIMPLE)
img _ area=get _ image _ size(img _ gray)#图像面积
img_copy=copy.copy(img_gray)
img_patches=[]
# 遍历全部轮廓
对于轮廓:中的(cannot)不能
area=cv2.contourArea(cnt)
if area/img _ area filter _ percent : #过滤小图像
继续
# 将小修补的前景设置为255,背景设置为0
mask=np.zeros(img_gray.shape)
cv2 .绘制轮廓(遮罩,[计数),-1,255,-1)
mask=mask.astype(np.uint8)
# 将原图,根据面具,贴入新图像中,再提取面具
masked=cv2.add(img_gray,np.zeros(np.shape(img_gray),dtype=np.uint8),mask=mask)
box=get_mask_box(掩码)
img _ patch=get _ cropped _ patch(masked,box)
img_patches.append(img_patch)
img _ copy=cv2。绘制等高线(img _ copy,[cnt],-1,255,1) #绘制边界
返回img_patches,img_copy
极好的获取图像大小:
获取图像尺寸
h,w=img.shape[:2]
返回浮动(高*宽)
def get_mask_box(mask):
面具的边框
将数组作为铭牌导入
y,x=np.where(掩码)
x_min=np.min(x)
x_max=np.max(x)
y_min=np.min(y)
y_max=np.max(y)
box=[x_min,y_min,x_max,y_max]
返回箱
def get_cropped_patch(img,box):
获取图片的修补
:param img:图像
:参数框: [x_min,y_min,x_max,y_max]
:退货图像块
h,w=img.shape[:2]
x_min=int(max(0,box[0]))
y_min=int(max(0,box[1]))
x_max=int(min(box[2],w))
y_max=int(min(box[3],h))
如果len(图像形状)==3:
img_patch=img[y_min:y_max,x_min:x_max,]
else:
img_patch=img[y_min:y_max,x_min:x_max]
返回img_patch
输入的灰度图像:
输出图像:
到此这篇关于开放计算机视觉实现从灰度图像切出面具前景区域的文章就介绍到这了,更多相关开放计算机视觉遮罩前景区域内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。