上几篇的内容我们学习了Python使用OpenCV处理图像鼠标及键盘事件的基础方法使用PythonOpenCV处理图像之详解使用OpenCV处理键盘鼠标事件及图像像素点内容的获取和设置使用PythonOpenCV处理图像之使用OpenCV获取并修改图像的像素值。
今天,我们来了解下对于一幅图像中感兴趣的区域如何获取。
如何获取我们感兴趣的内容呢首先,我们来打开一幅图像。具体代码如下,这里就不做解释了。
importcv2
img=cv2.imread(test.jpg)
对于一幅图像来讲,我们知道图像的表示方式如下图所示。详细内容参见前篇博文。
图像像素点的表示方式当然,对于我们感兴趣的区域就是由一定范围内的许多个像素点来表示。那么,问题来了,如何获得这一区域内容?如何用更加便利的数据结构来表示这一块区域?我们来看一下OpenCV中如何获取这一块区域的内容。其实,原理很简单,就是利用数组切片和索引操作来选择指定区域的内容。我们来看打开的这幅图像的内容。
原始图片如果我们对图片中的小船比较感兴趣,我们觉得这个小船有点孤单,想在小船的旁边在放一只同样大小的小船,我们该如何操作呢?
首先,我们选取感兴趣区域的像素范围,如下图所示。
获取感兴趣区域像素范围然后我们把它裁剪出来,具体代码如下图所示。
img2=img[:,:]#从ps中获取的内容要横纵坐标转换一下,最终获取到区域像素范围。
获取到这些内容了我们把它放到图片中的指定位置,注意,位置区域大小要和感兴趣的图片区域大小相同,具体打码如下所示。
img[:,:]=img2#直接将img2区域的像素点内容赋值给img中的区域内即可
我们来看下设置效果,如下图所示。
实现了感兴趣区域的复制怎么样?是不是很酷,一只孤单的小船旁边又添加了一只。
我们的小船不再孤单了好了,今天就到这里了,我们主要学习了感兴趣区域ROI的选取过程,并通过一个例子讲解了具体的操作步骤,感兴趣的朋友们自己马上试一试吧。从文中我们看到,对于感兴趣区域的选取,我们只能选择矩形区域内容。而且,当该区域粘贴到指定位置时,和背景图片融合不是很好。有没有好的办法呢?我们下文中会有涉及,欢迎大家留言讨论。
转载请注明出处,百家号:Python高手养成。