OpenCV 训练器样本创建辅助脚本
来源:互联网 发布:linux移植后有密码 编辑:程序博客网 时间:2024/05/17 06:02
代码经过简单整理后已经放到 Github 上了, 地址:https://github.com/xiaoya/OpenCVSampleCreatorAux.git
脚本是用Python写的,需要 OpenCV 的 Python 支持;Win7 + OpenCV 2.3 和 fedora 15 + OpenCV 2.2 下测试通过。
使用:
1. 假设下面的代码被保存在 xxx.py 中。
2. 终端命令,直接以命令行参数指定文件名:
xxx.py 001.png 002.png
3.直接拉一个矩形(再次单击取消选择), s 添加选区到临时结果中(每次绘好一个选区后,按一下 s 保存,程序会在终端输出临时结果),r 清空 s 保存的所有结果, S 保存所有选区到文件中,Esc 退出。鼠标中键可以调整选区大小。
4.某很懒,代码里没放注释,还有一些地方没完善...... 保存文件名(abc.idx)直接写在代码里了......
5.效果图:
#!/usr/bin/env python# -*- coding: utf-8 -*-import sysimport osimport cvbox = [-1, -1, 0, 0]drawing_box = 0def draw_box(image, rect): cv.Rectangle(image, (rect[0], rect[1]), (rect[0] + rect[2], rect[1] + rect[3]), cv.Scalar(0xff, 0x00, 0x00))def draw_rectangle_callback(event, x, y, flags, param): global drawing_box global box global flush if event == cv.CV_EVENT_MOUSEMOVE: if drawing_box: box[2] = x - box[0]; box[3] = y - box[1]; elif event == cv.CV_EVENT_LBUTTONDOWN: drawing_box = 1 box = [x, y, 0, 0] elif event == cv.CV_EVENT_LBUTTONUP: drawing_box = 0 if box[2] < 0: box[0] += box[2] box[2] *= -1 if box[3] < 0: box[1] += box[3] box[3] *= -1 draw_box(param, box) elif event == cv.CV_EVENT_MBUTTONDOWN: print box if box[0] > 0: box[2] = x - box[0] box[3] = y - box[1] if box[2] < 0: box[0] += box[2] box[2] *= -1 if box[3] < 0: box[1] += box[3] box[3] *= -1 draw_box(param, box)if __name__ == '__main__': srcv = sys.argv[1:] size = len(srcv) f = open('abc.idx', 'a') for i in srcv: object_cnt = 0 saving_msg = '' img = cv.LoadImageM(i) cv.NamedWindow(i) cv.ShowImage(i, img) src = cv.CreateImage(cv.GetSize(img), 8, 3) cv.Copy(img, src) temp = cv.CreateImage(cv.GetSize(img), 8, 3) cv.SetMouseCallback(i, draw_rectangle_callback, img) while 1: cv.Copy(img, temp) if drawing_box: draw_box(temp, box) cv.ShowImage(i, temp) cv.Copy(src, img) draw_box(img, box) cv.ShowImage(i, img) key = cv.WaitKey(15) if key == 115: if box[0] > 0: object_cnt += 1 saving_msg += ' {0} {1} {2} {3}'.format(box[0], box[1], box[2], box[3]) print i + ' {0}'.format(object_cnt) + saving_msg elif key == 83: f.write(i + ' {0}'.format(object_cnt) + saving_msg + '\n') print 'Saving item "' + i + ' {0}'.format(object_cnt) + saving_msg + '"' elif key == 114: object_cnt = 0 saving_msg = '' elif key == 27: box = [-1, -1, 0, 0] break cv.DestroyWindow(i)
- OpenCV 训练器样本创建辅助脚本
- opencv 训练器的制作笔记
- opencv自带的训练器
- opencv—HAAR训练器参数
- opencv的opencv_haartraining.exe训练器训练模型
- OPENCV级联分类器样本创建opencv_createsamples参数学习笔记
- 用shell 脚本创建lfw的正负样本对
- OpenCV的样本训练
- opencv训练样本
- OpenCV样本训练经验
- 【OpenCV】OpenCV的样本训练
- 利用系统自带脚本utlsampl.sql创建scott用户及样本数据
- gcov辅助脚本
- DBLinq mysql辅助脚本
- 在使用opencv自带训练器时遇到的不兼容的解决方案
- nginx启动脚本(样本)
- python生成opencv正样本和负样本描述文件
- 文件创建辅助类
- 学习Java需要达到的25个目标
- 宋利兴项目开发--心得
- android google天气 解析xml 显示中文
- poj 1287 Networking prim最小生成树 基础!!!
- 网页里添加QQ聊天按钮代码
- OpenCV 训练器样本创建辅助脚本
- JNI技术-1
- MSMQ列队简介
- 在桌面程序里,使用Uri.EscapeDataString实现HttpUtility.UrlEncode
- 希望
- poj 1789 Truck History prim最小生成树 基础!!!!
- 例解gcc内嵌汇编(inline assembly)中&修饰符(modifier)的作用
- 如何编写MapReduce代码
- 11/29/2011注册苹果开发者账号