山东大学数字图像处理实验一

山东大学数字图像处理实验一:python版本

实验工具:pycharm

实验1-1:图像显示

实验要求:

1)利用图像库的功能,实现从文件加载图像,并在窗口中进行显示的功能;

2)利用常见的图像文件格式(.jpg; .png; .bmp; .gif)进行测试。

实验代码:

import cv2

# 读取并显示图像
img = cv2.imread("a.png")

# 接着创建一个窗口
cv2.namedWindow("Image")

# 显示图像
cv2.imshow("Image", img)

# 等待按键用来展示图片
cv2.waitKey(0)

# 释放窗口
cv2.destroyAllWindows()

可是报错  libpng warning: iCCP: known incorrect sRGB profile

问题原因:新版的libpng增强了检查,这个警告可以忽略不计

问题解决:在网上下载ImageMagick,将出现警告的图片用ImageMagick打开再保存即可。
下载地址:https://imagemagick.org/script/download.php

再次运行,成功

实验1-2:图像合成

实验要求:

1)现有一张4通道透明图像a.png:

2)从其中提取出alpha通道并显示;

3)用alpha混合,为a.png替换一张新的背景(bg.png)

实验代码:

import cv2 as cv
import numpy as np

imgSrcA = cv.imread('a.png', cv.IMREAD_UNCHANGED)
imgSrcBg = cv.imread('bg.png', cv.IMREAD_UNCHANGED)
cv.imshow('alpha src', imgSrcA)

rows, cols, channels = imgSrcA.shape
B, G, R, A = cv.split(imgSrcA)
imgAlpha = np.zeros([rows, cols, 3], dtype='uint8')

for k in range(3):
    imgAlpha[:, :, k] = A[:, :]

cv.imshow('alpha channel', imgAlpha)

# 不包含alpha通道
imgSrcA = cv.imread('a.png')

imgMix = np.zeros([rows, cols, 3], dtype='uint8')
for i in range(rows):
    for j in range(cols):
        alpha = A[i][j] / 255
        beta = 1 - alpha
        for k in range(3):
            temp = int(imgSrcA[i, j, k]*alpha + imgSrcBg[i, j, k]*beta)
            if temp > 255:
                imgMix[i, j, k] = 255
            elif temp < 0:
                imgMix[i, j, k] = 0
            else:
                imgMix[i, j, k] = temp

cv.imshow('mixed image', imgMix)
cv.waitKey(0)
cv.destroyAllWindows()

运行结果:

依次出现下面三幅图,成功

 最终运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值