large_img1 = cv2.resize(img3, (0, 0), fx=2self.scale, fy=2self.scale) 改为以某个点为基准放大图片
时间: 2024-02-09 07:08:05 浏览: 75
放大图片的方法
要以某个点为基准放大图片,可以先计算出该点在原图中的坐标,然后以该点为中心进行缩放。具体实现可以按照以下步骤进行:
1. 计算出以该点为中心的矩形框在原图中的坐标范围,可以根据需要自定义矩形框的大小。
2. 将原图中该矩形框内的像素按照该点为中心进行平移,即将该点平移到矩形框的中心。
3. 对平移后的矩形框进行缩放操作,可以按照原来的方法使用 cv2.resize 函数。需要注意的是,此时缩放比例应该是相对于矩形框的大小而言,而不是相对于整张图片的大小。
4. 将缩放后的矩形框再次平移回去,使得该点仍然是图片的中心点。
以下是一个简单的代码示例,假设要以点 (x,y) 为中心放大图片:
```
import cv2
import numpy as np
# 读取原图
img = cv2.imread('test.jpg')
# 缩放比例
scale = 2
# 矩形框大小
w, h = 200, 200
# 计算矩形框在原图中的坐标范围
x1, y1 = int(x - w/2), int(y - h/2)
x2, y2 = int(x + w/2), int(y + h/2)
# 平移变换,将(x,y)移动到矩形框中心
M1 = np.float32([[1, 0, w/2-x], [0, 1, h/2-y]])
img2 = cv2.warpAffine(img, M1, (img.shape[1], img.shape[0]))
# 缩放变换,以矩形框为基准进行缩放
img3 = cv2.resize(img2[y1:y2, x1:x2], None, fx=scale, fy=scale)
# 平移变换,再次将(x,y)移回原位置
M2 = np.float32([[1, 0, x-w/2], [0, 1, y-h/2]])
large_img1 = cv2.warpAffine(img3, M2, (img3.shape[1], img3.shape[0]))
# 显示结果
cv2.imshow('large_img1', large_img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请注意,此代码仅供参考,具体实现方法可以根据需求进行调整。
阅读全文