前言
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方法)。
实现方法有很多,希望多多思考。