diff --git "a/OpenCV2-examples/1-src/\343\200\2201\343\200\221\347\254\254\344\270\200\347\253\240/\343\200\2206\343\200\221\346\222\255\346\224\276\350\247\206\351\242\221/6_\346\222\255\346\224\276\350\247\206\351\242\221/6_PlayVideo.cpp" "b/OpenCV2-examples/1-src/\343\200\2201\343\200\221\347\254\254\344\270\200\347\253\240/\343\200\2206\343\200\221\346\222\255\346\224\276\350\247\206\351\242\221/6_\346\222\255\346\224\276\350\247\206\351\242\221/6_PlayVideo.cpp" index 42030af..381b2a8 100644 --- "a/OpenCV2-examples/1-src/\343\200\2201\343\200\221\347\254\254\344\270\200\347\253\240/\343\200\2206\343\200\221\346\222\255\346\224\276\350\247\206\351\242\221/6_\346\222\255\346\224\276\350\247\206\351\242\221/6_PlayVideo.cpp" +++ "b/OpenCV2-examples/1-src/\343\200\2201\343\200\221\347\254\254\344\270\200\347\253\240/\343\200\2206\343\200\221\346\222\255\346\224\276\350\247\206\351\242\221/6_\346\222\255\346\224\276\350\247\206\351\242\221/6_PlayVideo.cpp" @@ -7,6 +7,7 @@ // 开发测试所用OpenCV版本: 2.4.9 // 2014年03月 Created by @浅墨_毛星云 // 2014年11月 Revised by @浅墨_毛星云 +// 2015年11月 Second Revised by @浅墨_毛星云 //------------------------------------------------------------------------------------------------ @@ -29,6 +30,13 @@ int main( ) { Mat frame;//定义一个Mat变量,用于存储每一帧的图像 capture>>frame; //读取当前帧 + + //若视频播放完成,退出循环 + if (frame.empty()) + { + break; + } + imshow("读取视频",frame); //显示当前帧 waitKey(30); //延时30ms } diff --git "a/OpenCV2-examples/1-src/\343\200\2206\343\200\221\347\254\254\345\205\255\347\253\240/\343\200\22034\343\200\221\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_LinearImageFilter.cpp" "b/OpenCV2-examples/1-src/\343\200\2206\343\200\221\347\254\254\345\205\255\347\253\240/\343\200\22034\343\200\221\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_LinearImageFilter.cpp" index c3e9e3c..8a341f4 100644 --- "a/OpenCV2-examples/1-src/\343\200\2206\343\200\221\347\254\254\345\205\255\347\253\240/\343\200\22034\343\200\221\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_LinearImageFilter.cpp" +++ "b/OpenCV2-examples/1-src/\343\200\2206\343\200\221\347\254\254\345\205\255\347\253\240/\343\200\22034\343\200\221\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_LinearImageFilter.cpp" @@ -69,9 +69,8 @@ int main( ) //创建窗口 namedWindow("【<1>方框滤波】", 1); //创建轨迹条 - createTrackbar("内核值:", "【<1>方框滤波】",&g_nBoxFilterValue, 40,on_BoxFilter ); - on_MeanBlur(g_nBoxFilterValue,0); - imshow("【<1>方框滤波】", g_dstImage1); + createTrackbar("内核值:", "【<1>方框滤波】", &g_nBoxFilterValue, 40, on_BoxFilter); + on_BoxFilter(g_nBoxFilterValue, 0); //================================================ //=================【<2>均值滤波】================== diff --git "a/OpenCV2-examples/1-src/\343\200\2209\343\200\221\347\254\254\344\271\235\347\253\240/\343\200\22084\343\200\221\346\250\241\346\235\277\345\214\271\351\205\215/84_\346\250\241\346\235\277\345\214\271\351\205\215/84_matchTemplate.cpp" "b/OpenCV2-examples/1-src/\343\200\2209\343\200\221\347\254\254\344\271\235\347\253\240/\343\200\22084\343\200\221\346\250\241\346\235\277\345\214\271\351\205\215/84_\346\250\241\346\235\277\345\214\271\351\205\215/84_matchTemplate.cpp" index 8f63cc2..9d6a523 100644 --- "a/OpenCV2-examples/1-src/\343\200\2209\343\200\221\347\254\254\344\271\235\347\253\240/\343\200\22084\343\200\221\346\250\241\346\235\277\345\214\271\351\205\215/84_\346\250\241\346\235\277\345\214\271\351\205\215/84_matchTemplate.cpp" +++ "b/OpenCV2-examples/1-src/\343\200\2209\343\200\221\347\254\254\344\271\235\347\253\240/\343\200\22084\343\200\221\346\250\241\346\235\277\345\214\271\351\205\215/84_\346\250\241\346\235\277\345\214\271\351\205\215/84_matchTemplate.cpp" @@ -76,9 +76,9 @@ void on_Matching( int, void* ) g_srcImage.copyTo( srcImage ); //【2】初始化用于结果输出的矩阵 - int resultImage_cols = g_srcImage.cols - g_templateImage.cols + 1; int resultImage_rows = g_srcImage.rows - g_templateImage.rows + 1; - g_resultImage.create( resultImage_cols, resultImage_rows, CV_32FC1 ); + int resultImage_cols = g_srcImage.cols - g_templateImage.cols + 1; + g_resultImage.create(resultImage_rows, resultImage_cols, CV_32FC1); //【3】进行匹配和标准化 matchTemplate( g_srcImage, g_templateImage, g_resultImage, g_nMatchMethod ); diff --git "a/OpenCV3-examples/src/\343\200\2201\343\200\221\347\254\254\344\270\200\347\253\240/\343\200\2206\343\200\221\346\222\255\346\224\276\350\247\206\351\242\221/6_\346\222\255\346\224\276\350\247\206\351\242\221/6_PlayVideo.cpp" "b/OpenCV3-examples/src/\343\200\2201\343\200\221\347\254\254\344\270\200\347\253\240/\343\200\2206\343\200\221\346\222\255\346\224\276\350\247\206\351\242\221/6_\346\222\255\346\224\276\350\247\206\351\242\221/6_PlayVideo.cpp" index 8ab90a5..cfa5c8d 100644 --- "a/OpenCV3-examples/src/\343\200\2201\343\200\221\347\254\254\344\270\200\347\253\240/\343\200\2206\343\200\221\346\222\255\346\224\276\350\247\206\351\242\221/6_\346\222\255\346\224\276\350\247\206\351\242\221/6_PlayVideo.cpp" +++ "b/OpenCV3-examples/src/\343\200\2201\343\200\221\347\254\254\344\270\200\347\253\240/\343\200\2206\343\200\221\346\222\255\346\224\276\350\247\206\351\242\221/6_\346\222\255\346\224\276\350\247\206\351\242\221/6_PlayVideo.cpp" @@ -7,6 +7,7 @@ // 开发测试所用OpenCV版本: 3.0 beta // 2014年11月 Created by @浅墨_毛星云 // 2014年11月 Revised by @浅墨_毛星云 +// 2015年11月 Second Revised by @浅墨_毛星云 //------------------------------------------------------------------------------------------------ @@ -29,6 +30,13 @@ int main( ) { Mat frame;//定义一个Mat变量,用于存储每一帧的图像 capture>>frame; //读取当前帧 + + //若视频播放完成,退出循环 + if (frame.empty()) + { + break; + } + imshow("读取视频",frame); //显示当前帧 waitKey(30); //延时30ms } diff --git "a/OpenCV3-examples/src/\343\200\2206\343\200\221\347\254\254\345\205\255\347\253\240/\343\200\22034\343\200\221\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_LinearImageFilter.cpp" "b/OpenCV3-examples/src/\343\200\2206\343\200\221\347\254\254\345\205\255\347\253\240/\343\200\22034\343\200\221\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_LinearImageFilter.cpp" index 2497b2b..441d306 100644 --- "a/OpenCV3-examples/src/\343\200\2206\343\200\221\347\254\254\345\205\255\347\253\240/\343\200\22034\343\200\221\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_LinearImageFilter.cpp" +++ "b/OpenCV3-examples/src/\343\200\2206\343\200\221\347\254\254\345\205\255\347\253\240/\343\200\22034\343\200\221\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_\347\272\277\346\200\247\345\233\276\345\203\217\346\273\244\346\263\242\347\273\274\345\220\210\347\244\272\344\276\213/34_LinearImageFilter.cpp" @@ -69,9 +69,8 @@ int main( ) //创建窗口 namedWindow("【<1>方框滤波】", 1); //创建轨迹条 - createTrackbar("内核值:", "【<1>方框滤波】",&g_nBoxFilterValue, 40,on_BoxFilter ); - on_MeanBlur(g_nBoxFilterValue,0); - imshow("【<1>方框滤波】", g_dstImage1); + createTrackbar("内核值:", "【<1>方框滤波】", &g_nBoxFilterValue, 40, on_BoxFilter); + on_BoxFilter(g_nBoxFilterValue, 0); //================================================ //=================【<2>均值滤波】================== diff --git "a/OpenCV3-examples/src/\343\200\2209\343\200\221\347\254\254\344\271\235\347\253\240/\343\200\22084\343\200\221\346\250\241\346\235\277\345\214\271\351\205\215/84_\346\250\241\346\235\277\345\214\271\351\205\215/84_matchTemplate.cpp" "b/OpenCV3-examples/src/\343\200\2209\343\200\221\347\254\254\344\271\235\347\253\240/\343\200\22084\343\200\221\346\250\241\346\235\277\345\214\271\351\205\215/84_\346\250\241\346\235\277\345\214\271\351\205\215/84_matchTemplate.cpp" index 85b7094..6298c65 100644 --- "a/OpenCV3-examples/src/\343\200\2209\343\200\221\347\254\254\344\271\235\347\253\240/\343\200\22084\343\200\221\346\250\241\346\235\277\345\214\271\351\205\215/84_\346\250\241\346\235\277\345\214\271\351\205\215/84_matchTemplate.cpp" +++ "b/OpenCV3-examples/src/\343\200\2209\343\200\221\347\254\254\344\271\235\347\253\240/\343\200\22084\343\200\221\346\250\241\346\235\277\345\214\271\351\205\215/84_\346\250\241\346\235\277\345\214\271\351\205\215/84_matchTemplate.cpp" @@ -76,9 +76,9 @@ void on_Matching( int, void* ) g_srcImage.copyTo( srcImage ); //【2】初始化用于结果输出的矩阵 - int resultImage_cols = g_srcImage.cols - g_templateImage.cols + 1; int resultImage_rows = g_srcImage.rows - g_templateImage.rows + 1; - g_resultImage.create( resultImage_cols, resultImage_rows, CV_32FC1 ); + int resultImage_cols = g_srcImage.cols - g_templateImage.cols + 1; + g_resultImage.create(resultImage_rows,resultImage_cols, CV_32FC1); //【3】进行匹配和标准化 matchTemplate( g_srcImage, g_templateImage, g_resultImage, g_nMatchMethod ); diff --git "a/OpenCV3-examples/src/\345\205\263\344\272\216\344\270\215\346\217\220\344\276\233OpenCV3\347\211\210\347\254\254\345\215\201\344\270\200\347\253\240\346\272\220\344\273\243\347\240\201\347\232\204\350\257\264\346\230\216.txt" "b/OpenCV3-examples/src/\345\205\263\344\272\216\344\270\215\346\217\220\344\276\233OpenCV3\347\211\210\347\254\254\345\215\201\344\270\200\347\253\240\346\272\220\344\273\243\347\240\201\347\232\204\350\257\264\346\230\216.txt" new file mode 100644 index 0000000..73bc958 --- /dev/null +++ "b/OpenCV3-examples/src/\345\205\263\344\272\216\344\270\215\346\217\220\344\276\233OpenCV3\347\211\210\347\254\254\345\215\201\344\270\200\347\253\240\346\272\220\344\273\243\347\240\201\347\232\204\350\257\264\346\230\216.txt" @@ -0,0 +1,14 @@ + +【注1】 +由于OpenCV3架构的更改,因为OpenCV3正式版中已经将feature2D移除,放到了第三方的xfeature2D库中。如果需要这使用这方面的库,还是推荐使用OpenCV2。所以本书OpenCV3版的程序仅包含1-10章,第11章和附赠示例程序请参考OpenCV2版的示例程序源代码。 + +【注2】 +OpenCV3中第三方库xfeature2D的下载地址如下: +https://github.com/Itseez/opencv_contrib/tree/master/modules/xfeatures2d + +【注3】 +鉴于目前世界范围内用xfeatures2D的人不多,网络上的资料更是少得可怜,就算成功配置,后面遇到新的问题,也很难得到解答。如果还是坚持使用xfeatures2d,除了OpenCV官方的Github,这边还有一份配置的教程,可供参考: +http://nishantnath.com/2015/10/19/open-cv-3-x-adding-contrib-support-to-default-installation/ + + +本书作者,于2015年11月。 \ No newline at end of file diff --git "a/OpenCV3-examples/~$\351\205\215\345\245\227\347\250\213\345\272\217\350\257\264\346\230\216.doc" "b/OpenCV3-examples/~$\351\205\215\345\245\227\347\250\213\345\272\217\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..9f72768 Binary files /dev/null and "b/OpenCV3-examples/~$\351\205\215\345\245\227\347\250\213\345\272\217\350\257\264\346\230\216.doc" differ