opencv中的copyTo函数在opencv-Python中的实现

opencv中的copyTo函数在opencv-Python中的实现Opencv 中的 copyTo 函数在 opencv Python 中的实现 copyTo 函数有两种方式第一种 src Image copyTo dst Image 表示将原图复制到目标图中 第二种 src Image copyTo dst Image mask 表示得到一个附加掩膜 mask 的目标图 第一种方法比较简单 这列主要讲解第二种方法 src Image copyTo

Opencv中的copyTo()函数在opencv-Python中的实现

copyTo() 函数有两种方式

  • 第一种:src_Image.copyTo(dst_Image),表示将原图复制到目标图中。
  • 第二种:src_Image.copyTo(dst_Image, mask),表示得到一个附加掩膜mask的目标图

第一种方法比较简单,这列主要讲解第二种方法。

src_Image.copyTo(dst_Image, mask)

  • 大致过程是说:将src_Image图 对照着mask图复制到dst_Image图,最后得到dst_Image图
  • 参数说明(原图需要和模板图有相同的大小,即高度,宽度,通道数都要相同,RGB图和GRAY图均可,只要他们相同大小,python中可用src_Image.shape查看图像大小)
    • src_Image:原图
    • dst_Image:结果图
    • mask:掩图

copyTo()的实现原理:

  • 在位置(x,y)时,如果mask的像素值不等于0,则dst(x,y) = src(x,y);
    如果mask的像素值等于0,则dst(x,y) = 0

  • 即在(x,y)处,当mask的像素值是0时,dst对应的像素就为0;当mask的像素值不是0时,dst对应的像素值为scr的像素值(下图方便理解)
    原理


代码实现

# 讲一下大致思路 import cv2 import numpy as np scr_Image = cv2.imread("原图") mask = cv2.imread("掩图") # 原图的高度和宽度 height = scr_Image.shape[0] width = scr_Image.shape[1] # 生成和原图一样高度和宽度的矩形(全为0) dst_Image = np.zeros((height, width), np.uint8) # 以下是copyTo的算法原理: # 先遍历每行每列(如果不是灰度图还需遍历通道,可以事先把mask图转为灰度图) for row in range(mask.shape[0]): for col in range(mask.shape[1]): # 如果掩图的像素不等于0,则dst(x,y) = scr(x,y) if mask[row, col] != 0: # dst_image和scr_Image一定要高宽通道数都相同,否则会报错 dst_Image[row, col] = scr_Image[row, col] # 如果掩图的像素等于0,则dst(x,y) = 0 elif mask[row, col] == 0: dst_Image[row, col] = 0 cv2.imshow("结果图", dst_Image) cv2.waitKey(0) cv2.destroyAllWindows() 
如果做的时候遇到如下的error,可能是图片的高宽通道数不一致,可以通过print(image.shape)来检查。

—ValueError: setting an array element with a sequence.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212091.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午8:51
下一篇 2026年3月18日 下午8:52


相关推荐

  • mac lion 系统安装

    mac lion 系统安装注意 低版本升级必须要全新安装 分区最多只能够分四个区 mac 一个区 win7 一个区 文档存储 2 个区 如果无需这么多盘也没关系 可以自己设定 一般 unix 系统只使用一个盘 那样文件操作会比较顺畅 分区次序 倒数第一个区必须安装 Mac 系统 倒数第二个区可以用来安装 Win7 系统 剩余的盘可以用来作为数据存储盘 下面介绍安装的流程 1 关闭电脑 接上 u 盘 点开机后马上按住 option 键不放 等待

    2026年3月19日
    2
  • 大气压力换算公式_气压单位换算表(压力单位换算公式大全)

    大气压力换算公式_气压单位换算表(压力单位换算公式大全)1bar=105Pa,一个标准大气压=1.01325*105Pa;1bar=0.98665标准大气压1巴(bar)=100,000帕(Pa)=10牛顿/平方厘米=0.1MPa是压强的单位,早先气象学中常用毫巴.咱们这教材,气压单位一会是hPa,一会是mb,也不说声是什么意思,网上又。mb=mbar毫巴(=百帕)mbar毫巴(=百帕)hPa百帕1百帕=1毫巴=3/4毫米水银柱.参考资料…

    2022年7月11日
    74
  • java培训达内学费[通俗易懂]

    java培训达内学费[通俗易懂]达内教育Java培训费用是多少钱?哪个机构好?根据目前的行情来看,Java培训费用大概在1-3万左右,每个人根据个人不同的基础决定学习的课程,有些人基础差点的,学习的是基础课程,费用相对低一点。除了关心Java培训费用是多少钱我们还会关心学习的周期,具体要学习多久呢?一般来说Java培训的时间是4个月左右,具体看个人学习情况,如果学习学的好,那么就4个月就能毕业了,如果是觉得学习完了后自己还是不太了解,那么可以留级,免费在学习一遍,为自己去面试在铺垫一下。Java培训哪个机构好?达内达内的特色是..

    2022年7月8日
    47
  • “养龙虾”爆火,首个模型排行榜出炉 MiniMax、Kimi国产双雄霸榜OpenClaw

    “养龙虾”爆火,首个模型排行榜出炉 MiniMax、Kimi国产双雄霸榜OpenClaw

    2026年3月13日
    2
  • 腾讯元宝浏览器插件v1.0.1最新版

    腾讯元宝浏览器插件v1.0.1最新版

    2026年3月12日
    3
  • 服务器系统监控工具,10款超实用的服务器监控工具和软件

    服务器系统监控工具,10款超实用的服务器监控工具和软件服务器监控软件和工具可以帮助我们从任何一个地方实时了解服务器的性能和功能。由于复杂的社交网络系统以及我们对于互联网的高度依赖,我们绝不允许那些宝贵的客户因自身系统停运而流失。选用实用的服务器工具和软件是一个明智的决定,能够同时为你带来短期效益和长期效益。下面是10款超实用的服务器监控工具和软件:1.SimpleServerMonitorSimpleServerMonitor是一款成本合理…

    2022年6月13日
    93

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号