资讯动态

OpenCV图像基本属性与操作:尺寸、通道、裁剪与翻转

发布时间:2026/10/23 7:58:14 来源:尧图企业网站定制
在使用OpenCV处理图像时了解图像的基本属性以及掌握一些基本的操作是非常重要的。就像我们拿到一件物品首先要知道它的大小、组成等基本信息然后才能对它进行加工和处理。在这一小节中我们将深入学习如何获取图像的尺寸、通道等属性以及如何进行图像的裁剪和翻转操作。图像基本属性获取获取图像尺寸图像的尺寸通常指的是图像的宽度和高度这是图像的一个重要属性。在OpenCV中我们可以很方便地获取图像的尺寸信息。简单来说就好比我们要知道一张纸的长和宽一样获取图像尺寸就是要确定图像在水平和垂直方向上的像素数量。下面是使用Python代码获取图像尺寸的示例importcv2# 读取图像imagecv2.imread(example.jpg)# 获取图像尺寸height,width,channelsimage.shapeprint(f图像宽度:{width}像素)print(f图像高度:{height}像素)在这段代码中我们首先使用cv2.imread函数读取一张图像。然后通过image.shape获取图像的形状信息它返回一个包含三个元素的元组分别是图像的高度、宽度和通道数。最后我们将宽度和高度信息打印出来。获取图像通道图像的通道数也是一个重要的属性。对于彩色图像通常有三个通道分别是红色R、绿色G和蓝色B也就是我们常说的RGB图像。而对于灰度图像只有一个通道。可以把通道想象成不同颜色的图层RGB图像就是由三个颜色图层叠加而成的。下面是获取图像通道数的代码示例importcv2# 读取图像imagecv2.imread(example.jpg)# 获取图像通道数height,width,channelsimage.shapeprint(f图像通道数:{channels})同样我们使用image.shape获取图像的形状信息其中第三个元素就是通道数。通过打印这个值我们就可以知道图像的通道数了。图像裁剪操作图像裁剪是指从原始图像中选取一部分区域作为新的图像。这就好比我们从一张大照片中裁剪出我们感兴趣的部分。在OpenCV中我们可以通过指定裁剪区域的坐标来实现图像裁剪。下面是图像裁剪的代码示例importcv2# 读取图像imagecv2.imread(example.jpg)# 定义裁剪区域x100y100width200height200# 进行裁剪cropped_imageimage[y:yheight,x:xwidth]# 显示裁剪后的图像cv2.imshow(Cropped Image,cropped_image)cv2.waitKey(0)cv2.destroyAllWindows()在这段代码中我们首先定义了裁剪区域的左上角坐标(x, y)以及裁剪区域的宽度和高度。然后通过image[y:yheight, x:xwidth]的方式从原始图像中裁剪出指定区域的图像。最后使用cv2.imshow函数显示裁剪后的图像。需要注意的是在进行图像裁剪时要确保裁剪区域的坐标和尺寸在原始图像的范围内否则会出现裁剪尺寸超出范围的错误。例如如果裁剪区域的右下角坐标超出了图像的边界就会导致错误。图像翻转操作图像翻转是指将图像沿着某个轴进行翻转常见的翻转方式有水平翻转和垂直翻转。水平翻转就像是我们在镜子中看到的左右颠倒的图像垂直翻转则是上下颠倒的图像。水平翻转下面是实现图像水平翻转的代码示例importcv2# 读取图像imagecv2.imread(example.jpg)# 水平翻转flipped_horizontalcv2.flip(image,1)# 显示翻转后的图像cv2.imshow(Flipped Horizontally,flipped_horizontal)cv2.waitKey(0)cv2.destroyAllWindows()在这段代码中我们使用cv2.flip函数进行图像翻转其中第二个参数1表示水平翻转。通过这种方式我们就可以得到水平翻转后的图像。垂直翻转下面是实现图像垂直翻转的代码示例importcv2# 读取图像imagecv2.imread(example.jpg)# 垂直翻转flipped_verticalcv2.flip(image,0)# 显示翻转后的图像cv2.imshow(Flipped Vertically,flipped_vertical)cv2.waitKey(0)cv2.destroyAllWindows()同样使用cv2.flip函数第二个参数0表示垂直翻转。这样我们就可以得到垂直翻转后的图像。常见问题解决裁剪尺寸超出范围问题当裁剪尺寸超出原始图像的范围时会导致程序出错。为了避免这种情况我们可以在裁剪之前进行检查确保裁剪区域的坐标和尺寸在原始图像的范围内。下面是一个改进后的裁剪代码示例importcv2# 读取图像imagecv2.imread(example.jpg)# 定义裁剪区域x100y100width200height200# 检查裁剪区域是否超出范围image_height,image_width,_image.shapeifxwidthimage_width:widthimage_width-xifyheightimage_height:heightimage_height-y# 进行裁剪cropped_imageimage[y:yheight,x:xwidth]# 显示裁剪后的图像cv2.imshow(Cropped Image,cropped_image)cv2.waitKey(0)cv2.destroyAllWindows()在这段代码中我们在裁剪之前检查了裁剪区域的右下角坐标是否超出了图像的边界如果超出了就调整裁剪区域的宽度和高度确保裁剪操作可以正常进行。翻转方向错误问题在使用cv2.flip函数时如果第二个参数使用错误会导致翻转方向错误。因此要牢记0表示垂直翻转1表示水平翻转。在编写代码时仔细检查参数的使用避免出现翻转方向错误的问题。总结与后续学习通过本小节的学习我们掌握了如何获取图像的尺寸、通道等基本属性以及如何进行图像的裁剪和翻转操作。这些基本操作是使用OpenCV进行图像分析和处理的基础能够帮助我们更好地理解和处理图像数据。掌握了这些内容后下一节我们将深入学习OpenCV中的图像滤波操作进一步完善对本章OpenCV基础入门主题的认知。通过图像滤波我们可以对图像进行去噪、模糊等处理从而提高图像的质量和可用性。 系列专栏导航 专栏导航 深入浅出OpenCV其他专栏衔接 《若依框架全攻略从入门到项目实战》 《深入浅出Mybatis》 全面掌握MySQL工具 《深入浅出Maven》 《深入浅出Kafka》 《全面掌握Swagger从入门到实战》 《Lombok高效Java开发的秘密武器完全解读》 博客概览《程序员技术成长导航专栏汇总》建议按系列顺序阅读从基础到进阶逐步掌握核心能力避免遗漏关键知识点全景导航博文系列《一口气学完fastJson》《一文搞懂PageHelper》《一文搞懂MyBatis》

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑