2020-10-12

python版opencv模板匹配及ROI区域选取

首先准备两张图,一张输入图像,一张模板图像。注意模板图像尺寸要和原始图像中的模板尺寸相同。
输入图像:
在这里插入图片描述
模板图像:
在这里插入图片描述

实现代码如下:

# -- coding:utf-8 --
import cv2

img = cv2.imread(“image.jpg”, 0)

img2 = img.copy()
template = cv2.imread(“template.jpg”, 0)
w, h = template.shape[::-1]

# 匹配效果对比算法
methods = [‘cv2.TM_CCOEFF’, ‘cv2.TM_CCOEFF_NORMED’, ‘cv2.TM_CCORR’,
‘cv2.TM_CCORR_NORMED’, ‘cv2.TM_SQDIFF’, ‘cv2.TM_SQDIFF_NORMED’]

img = img2.copy()
method = eval(methods[0])
res = cv2.matchTemplate(img, template, method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
top_left = min_loc
else:
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img, top_left, bottom_right, 255, 2)
cv2.imshow(“show”, img)
cv2.waitKey(0)
处理完效果图:
在这里插入图片描述
import cv2

img = cv2.imread("./image.jpg")
img2 = img.copy()

bbox = cv2.selectROI(windowName=“roi”, img=img, showCrosshair=True, fromCenter=False)
x, y, w, h = bbox

cv2.rectangle(img=img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255), thickness=2)
cv2.imshow(“roi”, img)

roiImage = img2[bbox[1]:bbox[1]+bbox[3], bbox[0]:bbox[0]+bbox[2]]
cv2.imwrite("./roi.jpg", roiImage)
cv2.waitKey(0)
cv2.destroyAllWindows()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_35224449

你的鼓励是我最大的努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值