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

山东大学数字图像处理实验一: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()

运行结果:

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

 最终运行结果:

Guess you like

Origin blog.csdn.net/weixin_51972142/article/details/127462748