问题记录,在使用vs的时候,opencv环境配置成功后,遇到问题解决方案。
环境:window 10 + opencv2.4.13 + vs2022
注意:我是在电脑上已经存在opencv4.5.5的情况下,继续配置其他版本的opencv
配置的步骤如下:
D:\opencv2.4.13\opencv\build\x64\vc12\bin
![]()





- opencv_calib3d2413d.lib
- opencv_contrib2413d.lib
- opencv_core2413d.lib
- opencv_features2d2413d.lib
- opencv_flann2413d.lib
- opencv_gpu2413d.lib
- opencv_highgui2413d.lib
- opencv_imgproc2413d.lib
- opencv_legacy2413d.lib
- opencv_ml2413d.lib
- opencv_nonfree2413d.lib
- opencv_objdetect2413d.lib
- opencv_ocl2413d.lib
- opencv_photo2413d.lib
- opencv_stitching2413d.lib
- opencv_superres2413d.lib
- opencv_ts2413d.lib
- opencv_video2413d.lib
- opencv_videostab2413d.lib
- opencv_calib3d2413.lib
- opencv_contrib2413.lib
- opencv_core2413.lib
- opencv_features2d2413.lib
- opencv_flann2413.lib
- opencv_gpu2413.lib
- opencv_highgui2413.lib
- opencv_imgproc2413.lib
- opencv_legacy2413.lib
- opencv_ml2413.lib
- opencv_nonfree2413.lib
- opencv_objdetect2413.lib
- opencv_ocl2413.lib
- opencv_photo2413.lib
- opencv_stitching2413.lib
- opencv_superres2413.lib
- opencv_ts2413.lib
- opencv_video2413.lib
- opencv_videostab2413.lib
VS配置属性表,保存Opencv配置信息_龙龙就是龙龙的博客-CSDN博客_opencv属性表
以上是opencv的配置过程。
问题1:
vs找不到msvcp120d .dll,无法继续执行代码。重新安装可能会解决此问题。
网上找了很多个解决方式,都没成功,终于在这边博主中博文中,解决了此问题:
压缩包 链接:https://pan.baidu.com/s/1VcYtdr2p87FInO61i-55yA
提取码:jtkw
环境:win10 vs2015 c++ opencv3.4.0
截图:

解决方式(不要怀疑下面写错了,是正确的):
第一步: 下载压缩包,并解压;
第二步: 32位的msvcp120d 和msvcr120d放到了C:\Windows\SysWOW64,
第三步: 64位的msvcp120d 和msvcr120d放到了C:\Windows\System32。
重新启动成功!
vs找不到msvcp120d .dll,无法继续执行代码。重新安装可能会解决此问题。_猫爪子挠的博客-CSDN博客
- /************************************************************************
- * Brief: FAST特征点提取以及FREAK描述子的图像匹配,基于OpenCV2.4.8
- ************************************************************************/
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
-
- using namespace std;
- using namespace cv;
-
- int main()
- {
- Mat img1_src = imread("C:/Users/820PC2/Desktop/img1.png", 0);
- Mat img2_src = imread("C:/Users/820PC2/Desktop/img2.png", 0);
- //FastFeatureDetector fast(40);
-
- SurfFeatureDetector fast(2000, 4);
- FREAK extractor;
- vector
keypoints1, keypoints2; - Mat descriptor1, descriptor2;
- vector
final_matches; - vector
matches; -
- double t = (double)getTickCount();
- fast.detect(img1_src, keypoints1);
- fast.detect(img2_src, keypoints2);
- //drawKeypoints(img1_src,keypoints1,img1_src,Scalar(0,255,0));
- //drawKeypoints(img2_src,keypoints2,img2_src,Scalar(0,255,0));
- extractor.compute(img1_src, keypoints1, descriptor1);
- extractor.compute(img2_src, keypoints2, descriptor2);
- BFMatcher matcher(NORM_HAMMING, true);//暴力匹配,并且进行crosscheck,就是说第二个参数选择true。
- matcher.match(descriptor1, descriptor2, matches);
- final_matches = matches;
- cout << "number of total_matches : " << final_matches.size() << endl;
-
- //接下来是RANSAC剔除误匹配
- vector
querymatches, trainmatches; - vector
p1, p2; - for (int i = 0; i < final_matches.size(); i++)
- {
- p1.push_back(keypoints1[final_matches[i].queryIdx]);
- p2.push_back(keypoints2[final_matches[i].trainIdx]);
- }
- for (int i = 0; i < p1.size(); i++)
- {
- querymatches.push_back(p1[i].pt);
- trainmatches.push_back(p2[i].pt);
- }
- cout << querymatches[1] << " and " << trainmatches[1] << endl;
- vector
status; - Mat h = findHomography(querymatches, trainmatches, status, CV_FM_RANSAC, 10);
- int index = 0;
- vector
super_final_matches; - for (int i = 0; i < final_matches.size(); i++)
- {
- cout << status[i];
- if (status[i] != 0)
- {
- super_final_matches.push_back(final_matches[i]);
- index++;
- }
- }
- cout << "number of inlier_matches : " << index << endl;
-
- Mat imgMatch;
- drawMatches(img1_src, keypoints1, img2_src, keypoints2, super_final_matches, imgMatch);
- imshow("imgMatch", imgMatch);
-
- t = ((double)getTickCount() - t) / getTickFrequency();
- cout << " total time [s] : " << t << endl;
- waitKey(0);
- cout << "结束" << endl;
- return 0;
- }

FAST特征点提取以及FREAK描述子的图像匹配:可以比较友好的提取图像中的敏感区域。