opencv 使用numpy的性质拼接大小相同的图片


前言

OpenCV 显示拼接大小相同的图片(在一张图上显示)

一、需求?

现有 春、夏、秋、冬四季的4张照片,它们的质量、大小各不相同,请你对它们进行缩放成300300像素的图片,然后合成一张600600大小的图片,以顺针时方向摆放春、夏、秋、冬图片,如下图所示,并保存、显示:

二、实现需求

1.代码

# 导入库
import cv2
import numpy as np

# 使用 openCV读入4张图 注意路径
spring = cv2.imread("images/spring.jpg")
summer = cv2.imread("images/summer.jpg")
autumn = cv2.imread("images/autumn.jpg")
winter = cv2.imread("images/winter.jpg")

# 使用 resize()方法修改其大小为 300*300 像素 既 dsize = (300, 300)
# resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)
spring2 = cv2.resize(spring, (300, 300), interpolation=cv2.INTER_CUBIC)
summer2 = cv2.resize(summer, (300, 300), interpolation=cv2.INTER_CUBIC)
autumn2 = cv2.resize(autumn, (300, 300), interpolation=cv2.INTER_CUBIC)
winter2 = cv2.resize(winter, (300, 300), interpolation=cv2.INTER_CUBIC)

# 新建一张图片pic像素是 600 * 600 (cols, rows, channel)
pic = np.zeros((600, 600, 3), dtype="uint8")

# cv2.imshow("spring2", spring2)
# cv2.imshow("summer", summer2)
# cv2.imshow("autumn", autumn2)
# cv2.imshow("winter", winter2)

# 修改图片pic相应位置的像素值 查看后文详细说明
pic[0:300, 0:300] = spring2[0:, 0:]  # 查看numpy索引
pic[0:300, 300:600] = summer2[0:, 0:]
pic[300:600, 0:300] = autumn2[0:, 0:]
pic[300:600, 300:600] = winter2[0:, 0:]

# 显示 修改像素后的pic图片
cv2.imshow("pic", pic)
cv2.waitKey(0)
cv2.destroyAllWindows()


2.效果

在这里插入图片描述

3.说明

在这里插入图片描述

三 、 总结

用到的库 numpy 、 OpenCV ,需要掌握的知识:OpenCV的图片读取(imread方法),修改图片的大小(resize方法),numpy创建数组需要三维数组(高,宽,颜色通道)元素类型是整型
图像的操作(修改像素的值),OpenCV显示图片(imshow方法)。
实现方法有很多,希望多多思考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值