问题描述

关于如何凸显一组图片的局部图像问题_解决方法

解决方法

用框凸显优势区域
关于如何凸显一组图片的局部图像问题_解决方法_02

代码

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
import os

if __name__ == '__main__':
num = 'b'
img1Path = f'./images/{num}1.png'
img2Path = f'./images/{num}2.png'
img3Path = f'./images/{num}3.png'
img4Path = f'./images/{num}4.png'

img1 = cv.imread(img1Path)
img2 = cv.imread(img2Path)
img3 = cv.imread(img3Path)
img4 = cv.imread(img4Path)

x = 450
y = 400
size = 250

subImg1 = img1[x:x+size, y:y+size, :]
subImg2 = img2[x:x+size, y:y+size, :]
subImg3 = img3[x:x+size, y:y+size, :]
subImg4 = img4[x:x+size, y:y+size, :]

temp1 = np.ones_like(subImg1[:, :, 0])
temp1[5:-5, 5:-5] = 0
img1[x:x + size, y:y + size, 0] = np.where(temp1 > 0, temp1 * 255, img1[x:x + size, y:y + size, 0])
img1[x:x + size, y:y + size, 1] = np.where(temp1 > 0, 0, img1[x:x + size, y:y + size, 1])
img1[x:x + size, y:y + size, 2] = np.where(temp1 > 0, 0, img1[x:x + size, y:y + size, 2])

temp2 = np.ones_like(subImg2[:, :, 0])
temp2[5:-5, 5:-5] = 0
img2[x:x + size, y:y + size, 0] = np.where(temp2 > 0, temp2 * 255, img2[x:x + size, y:y + size, 0])
img2[x:x + size, y:y + size, 1] = np.where(temp2 > 0, 0, img2[x:x + size, y:y + size, 1])
img2[x:x + size, y:y + size, 2] = np.where(temp2 > 0, 0, img2[x:x + size, y:y + size, 2])

temp3 = np.ones_like(subImg3[:, :, 0])
temp3[5:-5, 5:-5] = 0
img3[x:x + size, y:y + size, 0] = np.where(temp3 > 0, temp3 * 255, img3[x:x + size, y:y + size, 0])
img3[x:x + size, y:y + size, 1] = np.where(temp3 > 0, 0, img3[x:x + size, y:y + size, 1])
img3[x:x + size, y:y + size, 2] = np.where(temp3 > 0, 0, img3[x:x + size, y:y + size, 2])

temp4 = np.ones_like(subImg4[:, :, 0])
temp4[5:-5, 5:-5] = 0
img4[x:x + size, y:y + size, 0] = np.where(temp4 > 0, temp4 * 255, img4[x:x + size, y:y + size, 0])
img4[x:x + size, y:y + size, 1] = np.where(temp4 > 0, 0, img4[x:x + size, y:y + size, 1])
img4[x:x + size, y:y + size, 2] = np.where(temp4 > 0, 0, img4[x:x + size, y:y + size, 2])

plt.subplot(141)
plt.imshow(img1)
plt.subplot(142)
plt.imshow(img2)
plt.subplot(143)
plt.imshow(img3)
plt.subplot(144)
plt.imshow(img4)
plt.show()

outRoot = 'results'
if not os.path.exists(outRoot):
os.mkdir(outRoot)
cv.imwrite(f'./results/{num}1.png', img1)
cv.imwrite(f'./results/{num}2.png', img2)
cv.imwrite(f'./results/{num}3.png', img3)
cv.imwrite(f'./results/{num}4.png', img4)