1.1 Opencv-鼠标缩放图片

>1 当你使用cv2.imshow加载分辨率大于电脑自身的时候,图像只会在显示窗口上展示一部分,因此必须使用resize功能,对图片进行宽高等比缩放,并将最终的缩放图像进行保存。

>2 但该功能有个缺点就是imshow窗口也会跟着移动,并且图片是以(0,0)点进行缩放,缩放后的图像和窗口是粘黏的。

import cv2
import numpy as np

# 初始化缩放比例
scale = 1.0


# 鼠标滚动事件回调函数
def on_mouse_wheel(event, x, y, flags, param):
    global scale
    if event == cv2.EVENT_LBUTTONDOWN:
        scale = 1.0

    if event == cv2.EVENT_MOUSEWHEEL:
        # 检查滚轮是向上滚动还是向下滚动
        if flags > 0:  # 向上滚动
            scale *= 1.1  # 放大
        else:  # 向下滚动
            scale *= 0.9  # 缩小
        scale = max(0.1, min(2.0, scale))  # 限制缩放比例在 0.1 到 2.0 之间


# 读取图像
image = cv2.imread('original.png')  # 替换为你的图像路径
if image is None:
    print("Error: Image not found.")
    exit()

# 创建窗口

cv2.namedWindow('Image Zoom')

# 设置鼠标回调函数
cv2.setMouseCallback('Image Zoom', on_mouse_wheel)

while True:
    # 显示缩放后的图像
    resized_image = cv2.resize(image, None, fx=scale, fy=scale, interpolation=cv2.INTER_LINEAR)
    # cv2.namedWindow('Image Zoom', flags=cv2.WINDOW_NORMAL)
    cv2.imshow('Image Zoom', resized_image)
    # cv2.imwrite("Image Zoom.png", resized_image)

    # 按 'q' 退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

print(f"Final scale: {scale}")
cv2.destroyAllWindows()

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值