论文图片局部放大
import cv2
import numpy as np
from PIL import Image
%matplotlib inlinedef show_cvimg(im):return Image.fromarray(cv2.cvtColor(im,cv2.COLOR_BGR2RGB))def stack_image(path='71_mprnet.png', pt1=(120, 20), pt2=(390, 12), width=100):# 在指定的位置繪制正方形并在右下角放大該局部位置# pt:正方形位置,width : 正方形寬度 scale: 放大倍數(shù)image = cv2.imread(path)h, w, c = image.shapeif w % 2 != 0:if h % 2 != 0: # 寬高都是奇數(shù)image = cv2.resize(image, (w - 1, h - 1))else: # 寬是奇數(shù),高是偶數(shù)image = cv2.resize(image, (w - 1, h))elif h % 2 != 0: # 高是奇數(shù),寬是偶數(shù)image = cv2.resize(image, (w, h - 1))# 定義縮放比scale = h / w# patch1pt1_ = (pt1[0] + width, pt1[1] + int(width * scale))cv2.rectangle(image, pt1, pt1_, (0, 0, 255), 2)# patch2pt2_ = (pt2[0] + width, pt2[1] + int(width * scale))cv2.rectangle(image, pt2, pt2_, (0, 255, 0), 2)# 要放大的部分patch1 = image[pt1[1] + 2:pt1[1] + int(width * scale) - 2, pt1[0] + 2:pt1[0] + width - 2, :]patch1 = cv2.resize(patch1, (int(w / 2), int(h / 2)))patch2 = image[pt2[1] + 2:pt2[1] + int(width * scale) - 2, pt2[0] + 2:pt2[0] + width - 2, :]patch2 = cv2.resize(patch2, (int(w / 2), int(h / 2)))patch = np.hstack((patch1, patch2))image_stack = np.vstack((image, patch))return image_stack# 展示圖片
image = stack_image()
show_cvimg(image)
# 保存圖片
image_stack = stack_image()
cv2.imwrite('image_stack.png', image_stack, [cv2.IMWRITE_PNG_COMPRESSION, 0])
效果圖
總結(jié)
- 上一篇: 计算机组成原理R寄存器组,计算机组成原理
- 下一篇: matplotlib 的使用技巧(局部放