图像叠加和平移

      实验目的

1. 学会读入图片,显示图片

2. 学会使用两幅图片进行叠加

3. 学会使用图像进行平移

  • 实验内容 

 1 部分:读入图片

 2 部分:图像任意比例缩放

 3 部分:两幅图像进行叠加 

 4 部分:对图像进行旋转

第 5 部分:对图像进行平移

  • 实验过程

 1 部分:读入图片

 2 部分:图像任意比例缩放

import cv2 as cv
img = cv.imread("./lena.tif",cv.IMREAD_COLOR)
imgInfo = img.shape
print(imgInfo)
height = imgInfo[0]
width = imgInfo[1]
mode = imgInfo[2]
newHeight = int(height*0.5)
newWidth = int(width*0.5)
newImg = cv.resize(img,(newWidth,newHeight))
cv.imshow("result",newImg)
cv.waitKey(0)
cv.destroyALLWindows()

 3 部分:两幅图像进行叠加 

import cv2 as cv
# 读取一张图片
img1 = cv.imread("./lena.tif")
img2 = cv.imread("./green.jpg")
# 重置图片2的大小以匹配图片1
img3 = cv.resize(img2, (img1.shape[1], img1.shape[0]))
# 利用addWeighted API实现两张图片的叠加
dst = cv.addWeighted(img1, 0.5, img3, 0.5, 0)
# 显示图片
cv.imshow("1", img1)
cv.imshow("2", img2)
cv.imshow("dst", dst)
cv.waitKey(0)
cv.destroyAllWindows()

 4 部分:对图像进行旋转

import cv2 as cv
import numpy as np

img = cv.imread("./lena.tif")
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
matrixShift = np.float32([
    [1,0,50],
    [0,1,100]
])
dstImg = cv.rotate(img,cv.ROTATE_90_CLOCKWISE)
cv.imshow("dst",dstImg)
cv.waitKey(0)

第 5 部分:对图像进行平移

import cv2 as cv
import numpy as np

img = cv.imread("./lena.tif")
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
matrixShift = np.float32([
    [1,0,50],
    [0,1,100]
])
dstImg = cv.warpAffine(img,matrixShift,(width,height))
cv.imshow("dst",dstImg)
cv.waitKey(0)

  • 实验结果

 1 部分:读入图片

 2 部分:图像任意比例缩放

 3 部分:两幅图像进行叠加 

 4 部分:对图像进行旋转

第 5 部分:对图像进行平移

五、思考与总结

透明度的影响:通过改变alpha参数,我们可以看到透明度对图像叠加效果的影响。如果两个图像的差异很大,调整透明度可以帮助我们得到更好的效果。
色彩平衡和对比度的影响:如果两幅图像的色彩和亮度差异较大,可能需要进行色彩平衡和对比度的调整,以便得到更自然的效果。这可能需要使用到其他库,如OpenCV。
混合模式的影响:ImageChops模块还提供了多种混合模式,如屏幕、叠加、正片叠底等。这些混合模式可能会为叠加效果带来更多的可能性。
性能和内存使用:处理大图像时,需要考虑内存使用和性能优化。例如,可以尝试使用NumPy库来加快处理速度。
图像的质量:在叠加过程中,可能会牺牲一些图像质量。如何平衡效果和质量,是一个需要权衡的问题。
应用场景:图像叠加可以应用于很多领域,如照片处理、艺术创作、海报设计等。理解并掌握图像叠加技术,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蕊。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值