python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框
最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测。于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是:
1.在视频播放的过程中,当想选中哪幅图来标记目标时,按下暂停键。
2.框出你想要检测的目标。
那要怎么实现呢?
首先是暂停怎么实现呢?介于是摄像头直播,我们先将那副图像复制并在另一个窗口显示。然后关掉摄像头,就完成了暂停。后面标记完目标再打开摄像头就行了。那具体怎么实现呢...
import cv2 drawing = False
ix, iy = -1, -1
tempFlag = False
def draw_circle(event, x, y, flags, param):
global ix, iy, drawing, mode, cap, template, tempFlag
if event == cv2.EVENT_LBUTTONDOWN:
tempFlag = True
drawing = True
ix, iy = x, y #按下鼠标左键,用全局变量ix,iy记录下当前坐标点
elif event == cv2.EVENT_LBUTTONUP:
if drawing == True:
drawing = False #鼠标左键抬起,画出矩形框
cv2.rectangle(frame, (ix, iy), (x, y), (0, 255, 0), 1)
template = frame[iy:y, ix:x, :] #截取框中的目标图像
cap = cv2.VideoCapture(-1) #打开摄像头
cv2.imshow('img', frame) #显示画框后的图像 cv2.namedWindow('img')
cv2.setMouseCallback('img', draw_circle)
cap = cv2.VideoCapture(-1)
while (True):
ret, frame = cap.read()
cv2.imshow('Vedio', frame)
if tempFlag == True: #如果框出了目标,显示该目标
cv2.imshow('temp', template)
k = cv2.waitKey(33)
if k == 27: #退出视频
break
elif k == 32: #如果按下空格键
while(1):
cap.release() #关掉摄像头
imgCOPY = frame #显示关闭摄像头前最后一张图像
cv2.imshow('img', frame)
k = cv2.waitKey(0) #等待调用鼠标回调函数框出目标
if k == 32: #框完目标,再次按下空格键,摄像头捕捉的画面重新播放
break
结果如图



对于在图像中框出目标,其实我先看了网上的代码,比如http://blog.csdn.net/szfhy/article/details/51087301
我画框后的图片是这样的

内心是崩溃的,宝宝就只想要一个矩形框嘛~
本来我是想在画矩形框时,有一个矩形框随鼠标拖动大小随之改变,且只有一个矩形框,鼠标抬起时,矩形框确定。暂时不知怎么实现,有知道的可以交流一下,嘿嘿~
python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框的更多相关文章
- Python opencv提取视频中的图片
作者:R语言和Python学堂链接:https://www.jianshu.com/p/e3c04d4fb5f3 这个函数就是本文要介绍的video2frames()函数,功能就是从视频中提取图片,名 ...
- 50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶.视频监控.工业质检.医疗诊断等 ...
- Opencv在视频中静态、动态方式绘制矩形框ROI
Opencv视频处理中的目标跟踪经常用到要在视频上画一个矩形框ROI,标注出要跟踪的物体,这里介绍两种在视频中绘制矩形框的方法,一种是"静态的",一种是"动态的" ...
- python+opencv读取视频,调用摄像头
引用 import cv2 import numpy 创建摄像头对象 cap = cv2.VideoCapture("videoTest/test1.mp4") #参数为视频文件目 ...
- 50行Python代码实现视频中物体颜色识别和跟踪
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 机器学习与统计学 PS:如有需要Python学习资料的小伙伴可以加 ...
- pyhthon Opencv截取视频中的图片
import os import cv2 ##加载OpenCV模块 def video2frames(pathIn='', pathOut='', imgname='', only_output_vi ...
- html5中canvas的使用 获取鼠标点击页面上某点的RGB
1.html5中的canvas在IE9中可以跑起来.在IE8则跑不起来,这时候就需要一些东西了. 我推荐这种方法,这样显得代码不乱. <!--[if lt IE9]> <script ...
- WPF中关于自定义控件的滚动条鼠标停留在内容上鼠标滚轮滚动无效的问题
问题起因:在一个用户控件里放置了1个TreeView垂直顺序放置. 当用户控件中的内容超过面板大小时,滚动条会自动出现 ,但是只有当鼠标指示在右边滚动条的那一条位置时,才支持鼠标滚轴滚动. 点在控件内 ...
- 为什么说 Python 是数据科学的发动机(一)发展历程(附视频中字)
为什么说 Python 是数据科学的发动机(一)发展历程(附视频中字) 在PyData Seattle 2017中,Jake Vanderplas介绍了Python的发展历程以及最新动态.在这里我们把 ...
随机推荐
- CMD命令操作MySql数据库详解
第一:mysql服务的启动和停止 1. net stop mysql 2. net start mysql 第二:登录 mysql –u用户名 [–h主机名或者IP地址] –p密码 例如:mysq ...
- Oracle:对用户的CREATE、ALTER、GRANT、REVOKE操作练习
--创建一个用户yong2,yong2的表空间为users,临时表空间为temp,users的表空间大小为10M,密码立刻过期,用户锁定. CREATE USER yong2IDENTIFIED BY ...
- PHP和Python如何选择?或许可以考虑这三个问题
撤稿纠错 文/黄小天.李亚洲 (选自Hackernoon 机器之心编译) 2017 年可谓是网页应用与 API 之年,开发者不用每次重新发明轮子,而是利用脚手架和第三方库就能确保项目在几天内实时部署. ...
- ubuntu 修复 could not open file '/etc/apt/sources.list'
问题描述:could not open file '/etc/apt/sources.list' 问题分析:软件源被清空了,也就是 /etc/apt/sources.list 被删除了 解决问题:1. ...
- SpringMVC图片上传与显示
@RestController @Scope("prototype") @RequestMapping("/xxxx/xxx/main") public cla ...
- 2018/1/28 每日一学 单源最短路的SPFA算法以及其他三大最短路算法比较总结
刚刚AC的pj普及组第四题就是一种单源最短路. 我们知道当一个图存在负权边时像Dijkstra等算法便无法实现: 而Bellman-Ford算法的复杂度又过高O(V*E),SPFA算法便派上用场了. ...
- 非线性规划带约束-scipy.optimize.minimize
# coding=utf-8 from scipy import optimize import numpy as np def get(args): a, b, c, d, e, f, g, h = ...
- JDK自带的缓存--包装类的缓存
关于包装类和基本类型的文章我前面已经整理过了,这里大致罗列下重点.我们主要是想研究下包装类的缓存. 1,自动装箱和自动拆箱 java1.5之后就提供了自动装箱和自动拆箱的功能,当然我们也可以手动来装箱 ...
- java1.8--改进的接口
关于接口,每天的编码都在写,就不多说了.这里对比下接口,抽象类,类3者的关系: 1),接口是一种规范,就是告诉外界这个东东可以做什么. 2),抽象类是一种模板,就是告诉外界这个东西的一部分公共功能. ...
- Git初入
Git记录 使用git 也有一段时间了, git的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细 ...