初学opencv遇到的问题及解决办法(2)
2017-10-18 13:39
295 查看
这次我写的是轨迹条创建和使用createTrackerbar编程过程中遇到的问题。
先介绍一下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); }
从上面我的错误可以看出,学程序不仅需要勤于思考,勤于动手,还要细心啊!不然会吃亏的!
相关文章推荐
- 初学opencv遇到的问题及解决办法(3)
- 初学opencv遇到的问题及解决办法(3)
- 初学opencv遇到的问题及解决办法
- 初学opencv遇到的问题及解决办法
- 初学opencv遇到的问题及解决办法(2)
- MapReduce(Hbase)学习笔记---初学遇到的问题以及解决办法
- OpenCV4Android调试人脸识别sample时遇到的问题和解决办法
- 安装openCV到VS2010,Win764位机时遇到的问题的解决办法
- codeblocks-MinGW-4.8.1+opencv3.0+cmake遇到的问题及解决办法
- TX2上面opencv3.2安装遇到的两个问题及解决办法
- iOS OpenCV我安装遇到的问题和解决办法
- 初学Oracle时遇到的一点问题以及解决办法
- 【IntelliJ IDEA java-web 初学之容易遇到的问题及解决办法】
- win7+vs2010+opencv2.4.6调试SfM-Toy-Library-master时遇到的问题和解决办法
- Windows下安装express遇到的问题及解决办法
- Cloudera Manager5安装总结遇到问题及解决办法
- ztree使用基本方法及遇到的问题解决办法
- lighttpd+rails生产环境中遇到的几个问题及解决办法
- Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决
- 项目开发过程中遇到的一些问题和解决办法(逐渐添加)