今天试了下deepfacelive,太有趣了
不过是照搬他人的项目,神经网络和训练过程都没有学,有空可以先把收藏里的opencv深度学习项目复现。
昨天想把例题9-2改成矩形框绘制图形的程序但是失败了,问题挺多。
首先,我想通过矩形框的重叠部分,也就是颜色较深部分作为画笔,将输入的图片用矩阵重叠的形式画出来。
但是奈何绘画功底和原理空白,发现这个方案并不可行,又想不到别的方法,就搁置在那里。
其次,之前学习过图片转散点的方法是我的另一思考,这部分输出坐标数组应该没问题,但是上次是用python写的。
有空尝试写一个完整的将图像以各种抽象非人类的方式重构的程序,最好有个图形界面,选择文件并选择模式后自动生成。整好活就得是这种有趣无用的作品。希望下学期某个周末把他搞定!
回到正题
滑动条,滚动条和开关
HighGUI通过cv::createTrackbar创建一个滑动条
有两个函数可以用来获取和设置滑动条的位置值
cv::getTrackbarpos()
cv::setTrackbarpos()
可以用二值化的滑动条实现开关功能
回调函数根据position做出各种判断输出
类比上一节按键回调也是如此
通过Qt后端工作
基于Qt的HighGUI接口
使用Qt做后端的HighGUI和直接使用Qt是不同的
HighGUI接口依然是HighGUI接口,但是Qt替代了其他各类原始库,缺点是扩展Qt接口不方便,优点是Qt接口可以提供丰富功能
开始
若在编译opencv时选择Qt支持,那么打开一个窗口时,它会自动包含两个新的特性,分别是工具栏和状态栏。
工具栏包括一些按钮可以平铺,缩放等等
状态栏包括鼠标位置,当前位置RGB值等等
操作菜单
弹出菜单栏可以作为工具栏的替代方案
文本蒙版
能够放一个临时的条幅到展示的图像顶部,叫做蒙板
用于展示一些简单信息
状态栏中写入自己的内容
还可以在状态栏中写入文本
通过cv::displayStatusBar()替换状态栏中文本的值
但只能在cv::GUI_EXTENDED标志创建窗口时调用,文本延迟时间到了后,状态栏恢复默认
属性窗口
如果不想按钮和滑动条一直出现,属性窗口很适合放置。
每个应用只有一个属性窗口,不能创建只能配置
再述滑动条
前面在窗口中添加滑动条是cv::createTrackbar()
Qt接口可以在属性窗口中创建滑动条,并更加美观
通过cv::createButton创建按钮
正常按钮(PUSH_BUTTOPN),单选框(RADIOBOX),复选框(CHECKBOX)
所有按钮都在控制面板上
回调函数是指按钮点击时调用
文本和字体
字体通过函数cv::fontQt()创建
放置文本cv::addText中调用fontQt
设置和获取窗口属性
setwindowproperty
getwindowproperty
保存和恢复窗口状态
savewidowparameters
loadwindowparameters
和OpenGL交互
使用OpenGL生成图像和放置在图像顶部的蒙板
这样可以很高效地调试机器人或者增强现实的应用或者你想通过一些图像创建一个三维模型和在原始基础是观测结果
总额和opencv和全功能GUI工具包
开发面向用户的代码时,原始UI库和基于Qt的接口无法满足要求
Qt工具包
wxWidgets工具包
WTL工具包
这三者有一点类似,都是设置一个ontimer,进行帧率速度设置后,读取每下一帧画面