python_opencv实现掩膜

import ssl
import urllib.request
import cv2
import numpy as np

#获得图片
def getPic(name,url):
    # name ---图片地址
    # url  ---图片名字(自定义)
    # 解决SSL验证
    ssl._create_default_https_context = ssl._create_unverified_context
    # 请求图片
    resp = urllib.request.urlopen(url)
    image = np.asarray(bytearray(resp.read()), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)

    cv2.imwrite(name, image)
    # cv2.imshow(name, image)
    # cv2.waitKey()
    return image

#装饰图转化为二值图
def getBinaryImage(image):
    #如果 src(x,y)>threshold,dst(x,y) = 0; 否则,dst(x,y) = max_value
    #像素>0 --> = 0
    #像素=0 --> = 255
    return cv2.threshold(image,0,255,cv2.THRESH_BINARY_INV)



#原始图像地址
img_src_test='https://192.168.2.31:6443/arcgis/rest/services/XZ_Clip/MapServer/tile/0/11957/16689'
#装饰图地址
img_src_mask = 'https://192.168.2.31:6443/arcgis/rest/services/XZ_Ct/MapServer/tile/0/11957/16689'

#得到2张图片
image_test=getPic('img_src_test.jpg',img_src_test)
image_mask=getPic('img_src_mask.jpg',img_src_mask)

#将装饰图转为二值图
ret,image_mask = getBinaryImage(image_mask)

#展示转化后的二值图
# cv2.imshow("Image", image_mask)
# cv2.waitKey(500000)

#相加操作
image=cv2.add(image_mask,image_test)

cv2.imshow("Image", image)
cv2.waitKey(0)

原图:
在这里插入图片描述
装饰图:
在这里插入图片描述

结果图:

在这里插入图片描述

Python OpenCV中,掩膜(mask)是一种基本操作,用于提取图像中的特定区域或像素。掩膜通过与图像进行逐像素的逻辑运算来实现,根据特定的条件对像素进行筛选。 对于掩膜的使用,有几个重要的方法。首先是使用`cv2.inRange()`函数创建一个掩膜,该函数会从给定图像中提取满足特定颜色范围的像素。例如,在给定图像`picture`中提取蓝色区域,可以使用以下代码:`mask = cv2.inRange(picture, lower_blue, upper_blue)`。这里的`lower_blue`和`upper_blue`是用于定义蓝色范围的阈值。 其次,可以使用`cv2.cvtColor()`函数将图像转换为不同的颜色空间,其中最常用的是BGR到HSV的转换。在使用掩膜之前,通常需要将图像转换为HSV颜色空间,因为HSV颜色空间更适合用于颜色筛选。例如,使用以下代码将图像转换为HSV颜色空间:`hsv_image = cv2.cvtColor(picture, code=cv2.COLOR_BGR2HSV)`。这里的`code`参数指定了颜色转换的类型。 最后,使用掩膜与原始图像进行逐像素的逻辑运算,从而获取特定区域或像素。通过将掩膜与图像进行按位与(bitwise_and)操作,可以将掩膜应用于图像。这将使得掩膜之外的像素值变为0,而掩膜内的像素值保持不变。这样就可以实现对特定区域的提取。 综上所述,Python OpenCV中的掩膜是通过逐像素的逻辑运算来提取图像中的特定区域或像素。可以使用`cv2.inRange()`函数创建掩膜,并使用`cv2.cvtColor()`函数将图像转换为适合颜色筛选的颜色空间。然后,通过与原始图像进行按位与操作,可以将掩膜应用于图像。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [3.python-opencv图像mask掩膜处理](https://blog.youkuaiyun.com/weixin_45848575/article/details/125256320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [利用opencv进行掩膜操作详解,保证看完就会(python)](https://blog.youkuaiyun.com/qq_40210586/article/details/106572504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值