在图像处理过程中,我们可能会对图像的某一个特定区域感兴趣,该区域被称为感兴趣区域( Region of Interest,ROI):在设定感兴趣区域 ROI后,就可以对该区域进行整体操作。例如,将一个感兴趣区域A 赋值给变量B后,可以将该变量B 赋值给另外一个区域C,从而达到在区域C 内复制区域A 的日的。
例如,在图 2-16中,假设当前图像的名称为 img,图中的数字分别表示行号和列号。那么
图像中的黑色 ROI 可以表示为 img[200:400,200:400]
图 2-16RO 示例
通过以下语句,能够将图 2-16 中的黑色 RO1 复制到该区域右侧:
a=img[200:400,200:400]
img[200:400,600:800] =a
【例 2.13】获取图像 lena 的险部信息,并将其显示出来
根据题目要求,编写代码如下
import cv2
a=cv2.imread("lenacolor.png",cv2.IMREAD_UNCHANGED)
face=a[220:400,250:350]
cv2.imshow("original",a)
cv2.imshow("face",face)
cv2.waitKey()
cv2.destroyAllWindows()
在本例中,通过 face=a[220:400,250:350] 获取示了一个ROI,并使用cv2.imshow()展示出来
运行上述程序,会得到如图 218 所示的结果,其中左图是 lena 的原始图像,右图是图 中获取的脸部图像
程序的运行结果
【例 2.14】对 lena 图像的脸部进行打码
根据题目要求,编写代码如
import cv2
import numpy as np
a=cv2.imread("lenacolor.png",cv2.IMREAD_UNCHANGED)
cv2.imshow("original",a)
face=np.random.randint(0,256,(180,100,3))
a[220:400,250:350]=face
cv2.imshow("result",a)
cv2.waitKey()
cv2.destroyAllWindows()
在本例中,使用随机数生成的三维数组模拟了一幅賄机图像,实现了对脸部图像的打码。
运行上述程序,得到如图 2-19 所示结果,其中左图是 1ema 的原始图像,右图是脸部打
码
【例 2.15】将一副图像内的ROI复制到另一幅图像内
根据题目要求,编写代码如
import cv2
lena=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lena512.bmp")
dollar=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\dollar.bmp")
cv2.imshow("lena",lena)
cv2.imshow("dollar",dollar)
face=lena[220:400,250:350]
dollar[160:340,200:300]=face
cv2.imshow("result",dollar)
cv2.waitKey()
cv2.destroyAllWindows()
运行结果如图