初学opencv遇到的问题及解决办法(2)
来源:互联网 发布:淘宝天猫电器城 编辑:程序博客网 时间:2024/05/22 09:22
这次我写的是轨迹条创建和使用createTrackerbar编程过程中遇到的问题。
先介绍一下createTrackerbar():
CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname, int* value, int count, TrackbarCallback onChange=0, void* userdata=0);部分参数意义: int* value:创建滑动条时,滑动条的初始值; int count:滑动条的最大值; TrackbarCallback onChange=0:回调函数; void* userdata=0 :用户传给回调函数的数据,用来处理滑动条数值的变动。若在创建滑动条时,输入的value实参是全局变量,则可默认使用userdata=0.
我想将两张图片混合并将图像混合时的权重调节用滑动条来表示,可是第一次运行出错了,没有出现滑动条窗口,结果如下:
然后我找了两个小时左右,终于找到了问题所在,如下图:
将空格去掉就可以了。
本来以为这样就好了,但和我想得不一样。去掉那个空格后运行结果虽然有滑动条,而且也可以调节,但是不在“一张图片上”,那错了?
没错,又是空格!我真的无语了!
最终改正后的运行结果:
我的所有程序代码如下:
#include<opencv2/core.hpp>#include<opencv2/highgui.hpp>#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;const int Trackbar_value_MAX=100;int Trackbar_value;//滑动条对应的值double alpha_value, beta_value;//分别为第一幅,第二幅图的权重Mat srcImage1,srcImage2,dstImage ;void onTrackbar(int, void*);//声名回调函数int main(){ Mat srcImage11, srcImage22; srcImage11 = imread("potted-plant.jpg"); srcImage22 = imread("girl.jpg"); // imshow("srcImage11" ,srcImage11); // imshow(" srcImage22", srcImage22); resize(srcImage11, srcImage1, Size(srcImage11.cols / 1.8, srcImage11.rows / 1.8));//压缩图片到合适大小,原图太大了 imshow("potted-plant", srcImage1); resize(srcImage22, srcImage2, Size(srcImage22.cols / 1.8, srcImage22.rows / 1.8)); imshow("girl", srcImage2); //判断图片是否加载成功 if (srcImage1.empty() || srcImage2.empty()) { cout << "to load failed!" << endl; return -1; } else cout << "to load successfully!" << endl; namedWindow("混合后的图像", WINDOW_AUTOSIZE); Trackbar_value = 20;//滑动条初始值 //在创建的窗体中创建滑动条控件并且命名 char TrackBarName[100]; sprintf_s(TrackBarName, "透明度 %d", Trackbar_value_MAX); createTrackbar(TrackBarName, "混合后的图像", &Trackbar_value, Trackbar_value_MAX, onTrackbar); onTrackbar(Trackbar_value, 0); waitKey(0); return 0;}void onTrackbar(int,void*){ alpha_value = (double)Trackbar_value / Trackbar_value_MAX; beta_value = 1.0 - alpha_value; addWeighted(srcImage1, alpha_value, srcImage2, beta_value, 0.0, dstImage); imshow("混合后的图像", dstImage);}
从上面我的错误可以看出,学程序不仅需要勤于思考,勤于动手,还要细心啊!不然会吃亏的!
阅读全文
1 0
- 初学opencv遇到的问题及解决办法
- 初学opencv遇到的问题及解决办法(2)
- 初学opencv遇到的问题及解决办法(3)
- 【IntelliJ IDEA java-web 初学之容易遇到的问题及解决办法】
- 遇到的问题及解决办法
- WinCE初学遇到的问题及解决方案
- 初学Opencv时候遇到的几个编译器报错问题
- 初学Oracle时遇到的一点问题以及解决办法
- 关于初学struts2遇到的问题和解决办法
- 初学遇到的问题
- Webservice发布遇到的问题及解决办法
- 安装RMagick遇到的问题及解决办法
- Debian 遇到的问题及解决办法
- 常遇到的JCO问题及解决办法
- linux下组播遇到的问题及解决办法
- opengl 遇到的问题及解决办法 总结
- hadoop部署遇到的问题及解决办法
- centos遇到的问题及解决办法
- c++能否在析构函数和构造函数中抛出异常?
- mybatis中的转义字符使用
- edgesForExtendedLayout浅淡
- adb shell am命令
- 使用httpclient传输文件
- 初学opencv遇到的问题及解决办法(2)
- AMD ryzen fedora26 安装Nvidia驱动
- HashMap的底层学习
- word-break Java code
- 阿里云ECS使用vnc远程连接
- 细谈select函数(C语言)
- 简单okHttpUtils封装
- Matlab GUI,坐标轴控件,画sin函数
- 图像和流媒体 -- 帧率、分辨率、码流的概念和关系