首页 > 其他分享 >OpenCV零基础入门(3):ROI区域|颜色通道提取|边界填充|图像融合

OpenCV零基础入门(3):ROI区域|颜色通道提取|边界填充|图像融合

时间:2024-12-18 17:30:00浏览次数:6  
标签:ROI plt 入门 img cv2 dog 填充 OpenCV size

本文主要内容如下:

  • ROI区域
  • 颜色通道提取
  • 边界填充
  • 图像融合

1.截取部分图像数据(ROI区域)
ROI(Region of Interest),即感兴趣区域,是指在图像处理和计算机视觉中,从被处理的图像中以方框、圆、椭圆、不规则多边形等方式勾勒出的需要处理的区域。在机器视觉、图像处理等领域,ROI是一个重要的概念,常用于目标检测、图像分割和物体跟踪等任务中。‌

import cv2
import matplotlib.pyplot as plt 
import numpy as np

def cv_show(name,img):
    cv2.imshow(name,img) 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

img=cv2.imread('./img/dog.png')
dog=img[0:200,0:400] #原点为图像左上角的点,截取图像高200个像素点,宽400个像素点
cv_show('dog',dog)

运行结果如图所示:
截取部分图像数据
2.颜色通道提取
OpenCV默认使用BGR(蓝/绿/红)顺序来存储图像的颜色通道。B通道是img[:,:,0],G通道是img[:,:,1],R通道是img[:,:,2]

提取蓝色通道:

img=cv2.imread('./img/dog.png')
img[:,:,1]=0 #G通道关闭
img[:,:,2]=0 #R通道关闭
cv_show('Bdog',img)

运行结果如图所示:
颜色通道提取
如果使用cv2.split()函数拆分图像的通道,显示出来都是灰色的。因为只有一个色彩通道,当灰度图处理了。
split
合并三个通道:

Imagebgr=cv2.merge([b,g,r]) #Imagebgr是合并后的图像

3.边界填充

  • 边界填充类型(borderType):
  • BORDER_REPLICATE:复制法,也就是复制最边缘像素。
  • BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制。
  • BORDER_CONSTANT:常数值填充
import cv2
img=cv2.imread('./img/dog.png')

top_size,bottom_size,left_size,right_size=(50,50,50,50) #上下左右的填充宽度
replicate=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)#复制法填充
reflect=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT)#反射法填充
constant=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT)#常数值填充

import matplotlib.pyplot as plt
#plt.subplot(221)表示把显示界面分割成2*2的网格。其中,第一个参数是行数,第二个参数是列数,第三个参数表示图形的标号
plt.subplot(221),plt.imshow(img,'gray'),plt.title('ORIGINAL')#原图
plt.xticks([]),plt.yticks([])#隐藏x轴和y轴上的刻度值
plt.subplot(222),plt.imshow(replicate,'gray'),plt.title('REPLICATE')#复制法填充
plt.xticks([]),plt.yticks([])
plt.subplot(223),plt.imshow(reflect,'gray'),plt.title('REFLECT')#反射法填充
plt.xticks([]),plt.yticks([])
plt.subplot(224),plt.imshow(constant,'gray'),plt.title('CONSTANT')#常数值填充
plt.xticks([]),plt.yticks([])

运行结果如图所示:
边界填充
4.图像融合

import cv2
img_dog=cv2.imread('./img/dog.png')
img_cat=cv2.imread('./img/cat.png')
#将cat.png的height和width修改成跟dog.png一样
img_cat=cv2.resize(img_cat,(523,495))
res=cv2.addWeighted(img_dog,0.6,img_cat,0.4,0) #img_dog的权重0.6,img_cat的权重0.4,两张图片叠加
plt.imshow(res)


运行结果如图所示:
图像融合
cv2.resize()的另一个用法:在x轴和y轴上分别放缩

res=cv2.resize(img_cat,(0,0),fx=3,fy=1) #x轴放大三倍
plt.imshow(res)

运行结果如图所示:
在x轴放大三倍

标签:ROI,plt,入门,img,cv2,dog,填充,OpenCV,size
From: https://blog.csdn.net/2301_80551279/article/details/144565140

相关文章

  • 探索LangChain与LangGraph:从入门到进阶的LLM应用开发指南
    探索LangChain与LangGraph:从入门到进阶的LLM应用开发指南在当今的技术发展浪潮中,语言模型(LLM)的应用变得越来越普遍。无论是构建聊天机器人还是数据分析系统,LLM无疑提供了强大的支持。本文将引导您从LangChain的基础入手,逐步探索构建LLM应用程序的实际案例和技术细节,最后为......
  • [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力
      QTforAndroid优势01-跨平台的优越性Qt是一个强大的跨平台框架,允许开发者使用相同的代码库来构建多个平台上的应用,包括Windows、macOS、Linux以及移动平台Android和iOS。这意味着开发者不需要为每个平台单独编写代码,可以显著减少开发时间和维护成本。同时,Qt提供......
  • node.js毕设基于android的课堂考勤管理系统 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于课堂考勤管理系统的研究,现有研究主要集中在传统的考勤方式或者基于PC端的管理系统,专门针对基于Android平台的课堂考勤管理系统的研究较少。在国内外......
  • CUDA编程入门
    CUDA(ComputerUnifiedDeviceArchitecture)全称为计算统一设备架构。在人工智能技术快速发展的当代,CUDA是做模型训练时性能速度优化所必须的。本文将从下面几个方面解释CUDA比较重要的知识点:目录1.GPU架构特点1.1串行和并行计算1.2GPU和CPU的区别2.CUDA线程模型两层结......
  • 【VScode】编程工具入门教程:CodeMoss & ChatGPT中文版超详细入门教程!
    文章目录摘要一、环境介绍VSvode安装步骤IDER(Pycharm)安装步骤Web使用步骤二、Moss9大功能讲解1、AI问答对话2、文件上传功能3、自定义AI助手4、AI联网助手5、AI图片识别6、思维链思维链的简单介绍使用CodeMoss思维链7、AI图片生成图片生成效果8、图片生成代码9、......
  • 黑客入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
       这篇文章没有什么套路。就是一套自学理论和方向,具体的需要配合网络黑白去学习。毕竟是有网络才会有黑白!有自学也有培训!1.打死也不要相信什么分分钟钟教你成为大黑阔的,各种包教包会的教程,就算打不死也不要去购买那些所谓的盗号软件之类的东西。2,我之前让你们在没有目......
  • 做网络安全的怎么去找私活赚外快?谈谈我自己的所知的几个渠道。零基础入门到精通,收藏这
    这已经是我做网络安全工程师(简称网安)的第8个年头了,从我工作的第3年起,我就一直在开始尝试去接网安方面的私活,并不是因为我有多努力,而是男人到了谈婚论嫁的年纪,不努力也得努力。而这6年平均下来,我接私活赚的钱几乎是我工资的2倍多。而很多人要么不敢去做,要么就是做得不好,其......
  • 入门SQL一篇文章就够了
    SQL(StructuredQueryLanguage)即结构化查询语言,是用于管理关系型数据库的标准语言。一、基础环境搭建安装数据库管理系统(DBMS)常见的有MySQL、Oracle、SQLServer等。以MySQL为例,你可以从官方网站下载适合你操作系统的安装包进行安装。在安装过程中,需要注意设置好用户名、密......
  • LUA入门
    LUAlua版本(5.1+)当前多数模块对lua的版本都是5.1以上,因此要注意版本。luarocksLuarocks是一个用于Lua编程语言的包管理器。类似java中的maven,python中的pip。luarocks可从网址查看是否具有响应的包,网址:https://luarocks.org/luarocksinstalllpeg2.5对于手动下载......
  • 探索Node.js的奇妙世界:从零开始的入门之旅
    引言:在现代Web开发领域,Node.js已经成为了一颗耀眼的新星。它不仅改变了服务器端编程的游戏规则,还为开发者们提供了一种全新的方式来构建高效、可扩展的网络应用。无论你是前端开发者还是后端开发者,了解和掌握Node.js都将为你的开发生涯增添一份强大的技能。本文将带你踏上......