large_img1 = cv2.resize(img3, (0, 0), fx=2self.scale, fy=2self.scale) 改为以某个像素点为基准放大图片
时间: 2024-02-09 08:08:07 浏览: 53
Python OpenCV之图片缩放的实现(cv2.resize)
如果要以某个像素点为基准放大图片,可以按照以下步骤进行:
1. 计算出以该像素点为中心,放大后的图片的大小。
2. 根据放大后的大小,创建一个空白的图片。
3. 将原图的像素点按照一定的比例复制到新的图片中,以达到放大的效果。具体来说,可以以该像素点为中心,在周围复制多个像素点,同时根据距离和颜色等因素,进行插值计算,以获得更加自然的放大效果。
4. 最后,可以根据需要,对放大后的图片进行一些后处理,如调整亮度、对比度等。
下面是一个可能的实现过程:
``` python
import cv2
import numpy as np
def zoom_at_point(img, scale, point):
# 以 point 为中心,计算放大后的大小
h, w = img.shape[:2]
x, y = point
new_h, new_w = int(h * scale), int(w * scale)
top, left = max(0, y - int(new_h / 2)), max(0, x - int(new_w / 2))
bottom, right = top + new_h, left + new_w
# 创建空白的图片
new_img = np.zeros((new_h, new_w, 3), dtype=np.uint8)
# 复制像素点,并进行插值计算
for i in range(top, bottom):
for j in range(left, right):
src_i, src_j = int((i - top) / scale), int((j - left) / scale)
if src_i < 0 or src_i >= h or src_j < 0 or src_j >= w:
continue
new_img[i - top, j - left] = img[src_i, src_j]
# 后处理
new_img = cv2.cvtColor(new_img, cv2.COLOR_BGR2RGB)
new_img = cv2.convertScaleAbs(new_img, alpha=1.2, beta=10)
return new_img
```
其中,`point` 表示要放大的像素点的坐标,`scale` 表示放大倍数,`img` 表示原始图片。函数返回放大后的图片。
阅读全文