MATLAB快速切图,opencv 实时切图

实时切图,并显示切割的矩形框

d08505a7c94d5102893f4a75b549a588.png

7b9b91c453efa49117840337da0e85e6.png

绑定鼠标点击和移动事件

注意绘图时,cv是会修改原图像的,所以需要一份拷贝

import cv2 as cv

# 将传入的img选择的部分返回

def cut(img):

cv.namedWindow('img', cv.WINDOW_NORMAL)

click_cnt = 0

click_pos = []

move_x = 0

move_y = 0

def on_mouse(event, x, y, flags, param):

if event == cv.EVENT_LBUTTONDOWN: # 左键点击

print(x, y)

nonlocal click_cnt, click_pos, move_x, move_y

click_pos.append([x, y])

click_cnt += 1

if event == cv.EVENT_MOUSEMOVE:

move_x, move_y = x, y

cv.setMouseCallback('img', on_mouse)

while True:

img_copy = img.copy()

if click_cnt == 1:

x1, y1 = click_pos[0]

cv.rectangle(img_copy, (x1, y1), (move_x, move_y), (255, 0, 0), 5)

cv.imshow('img', img_copy)

cv.waitKey(10)

if click_cnt == 2:

break

# 完成两次点击

print(click_pos)

[x1, y1], [x2, y2] = click_pos

x1, x2 = min(x1, x2), max(x1, x2)

y1, y2 = min(y1, y2), max(y1, y2)

part = img[y1:y2, x1:x2, :]

return part

def main():

img_path = './img6.png'

part_path = './part55.png'

img = cv.imread(img_path)

part = cut(img)

cv.imwrite(part_path, part)

if __name__ == '__main__':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值