- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是Features2D + Homography 从打开的 cv 文档中查找已知对象的代码
#include<opencv\cv.h>
#include <opencv2\core\core.hpp>
#include <opencv2\features2d\features2d.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\nonfree\nonfree.hpp>
#include <opencv2\calib3d\calib3d.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
/** @function main */
int main(){
/*-- Load the images --*/
Mat image1= imread("C:\\panL.jpg");
Mat image2 = imread("C:\\panR.jpg");
if (!image1.data || !image2.data)
{
cout << " --(!) Error reading images " << endl; return -1;
}
imshow("first image", image2);
imshow("second image", image1);
/*-- Detecting the keypoints using SURF Detector --*/
int minHessian = 400;
SurfFeatureDetector detector(minHessian);
vector<KeyPoint> keypoints_1, keypoints_2;
detector.detect(image1, keypoints_1);
detector.detect(image2, keypoints_2);
/*-- Calculating descriptors (feature vectors) --*/
SurfDescriptorExtractor extractor;
Mat descriptors_1, descriptors_2;
extractor.compute(image1, keypoints_1, descriptors_1);
extractor.compute(image2, keypoints_2, descriptors_2);
/*-- Step 3: Matching descriptor vectors using FLANN matcher --*/
FlannBasedMatcher matcher;
vector< DMatch > matches;
matcher.match(descriptors_1, descriptors_2, matches);
//-- Quick calculation of max and min distances between keypoints
double max_dist = 0; double min_dist = 100;
for (int i = 0; i < descriptors_1.rows; i++)
{
double dist = matches[i].distance;
if (dist < min_dist) min_dist = dist;
if (dist > max_dist) max_dist = dist;
}
cout << "-- Max dist :" << max_dist << endl;
cout << "-- Min dist :" << min_dist << endl;
/*-- Drawing matches whose distance is less than 2*min_dist,
*-- or a small arbitary value ( 0.02 ) in the event that min_dist is verysmall)
*/
vector< DMatch > good_matches;
for (int i = 0; i < descriptors_1.rows; i++)
{
if (matches[i].distance <= max(2 * min_dist, 0.02))
{
good_matches.push_back(matches[i]);
}
}
/*-- Draw only good matches --*/
Mat img_matches;
drawMatches(image1, keypoints_1, image2, keypoints_2,
good_matches, img_matches, Scalar::all(-1), Scalar::all(-1),
vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
/*-- Show detected matches --*/
imshow("Good Matches", img_matches);
for (int i = 0; i < (int)good_matches.size(); i++)
{
cout << "-- Good Match [i] Keypoint 1: " << good_matches[i].queryIdx << " -- Keypoint 2:" << good_matches[i].trainIdx << endl;
}
vector< Point2f > obj;
vector< Point2f > scene;
if (good_matches.size() >= 4)
{
for (int i = 0; i < good_matches.size(); i++)
{
//-- Get the keypoints from the good matches
obj.push_back(keypoints_1[good_matches[i].queryIdx].pt);
scene.push_back(keypoints_2[good_matches[i].trainIdx].pt);
}
// Find the Homography Matrix
Mat H = findHomography(obj, scene, CV_RANSAC);
// Use the Homography Matrix to warp the images
Mat result;
warpPerspective(image1, result, H, Size(image1.cols + image2.cols, image1.rows));
Mat half(result, Rect(0, 0, image2.cols, image2.rows));
image2.copyTo(half);
imshow("Result", result);
}
waitKey(0);
return 0;
编译时出现 2 个错误:
Error 5 error LNK2019: unresolved external symbol "class cv::Mat __cdecl cv::findHomography(class cv::_InputArray const &,class cv::_InputArray const &,int,double,class cv::_OutputArray const &)" (?findHomography@cv@@YA?AVMat@1@AEBV_InputArray@1@0HNAEBV_OutputArray@1@@Z) referenced in function main C:\Users\Paradox\Documents\Visual Studio 2013\Projects\Stiching~1\Stiching~1\Source.obj Stiching~1
Error 6 error LNK1120: 1 unresolved externals C:\Users\Paradox\Documents\Visual Studio 2013\Projects\Stiching~1\x64\Debug\Stiching~1.exe 1 1 Stiching~1
最佳答案
您收到链接错误是因为您没有链接 OpenCV 库。您可以将以下库添加到 VS2013 项目的 Properties > Linker > Input > Additional Dependencies
(假设您在 Debug模式下使用 OpenCV-2.4.8):
opencv_videostab248d.lib
opencv_video248d.lib
opencv_ts248d.lib
opencv_superres248d.lib
opencv_stitching248d.lib
opencv_photo248d.lib
opencv_ocl248d.lib
opencv_objdetect248d.lib
opencv_nonfree248d.lib
opencv_ml248d.lib
opencv_legacy248d.lib
opencv_imgproc248d.lib
opencv_highgui248d.lib
opencv_gpu248d.lib
opencv_flann248d.lib
opencv_features2d248d.lib
opencv_core248d.lib
opencv_contrib248d.lib
opencv_calib3d248d.lib
如果你使用 CMake,这会容易得多,这可以简单地通过以下方式完成:
target_link_libraries(yourProject ${OpenCV_LIBS})
关于c++ - 在使用 findHomography 时遇到一些困难 - 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29286460/
目标:从相机透视图中获取一个点(或一组点)并将其转换到相应的地平面点。 方法:使用findHomography来获取单应性Mat。计划使用perspectiveTransform()。 问题:无法解释
我用过这个code作为在场景中检测我的矩形目标的基础。我使用 ORB 和 Flann Matcher。我已经能够使用 findHomography() 和 perspectiveTransform()
使用 opencv2 - 2.4.9 尝试使用 cv2.findHomography 计算单应矩阵时出现以下错误。我使用的值显然有问题,尤其是 rect_points 矩阵。如果我更改矩阵的值以使它们
我想旋转图像而不求助于 cv2.warpPerspective()。如何从 cv2.findHomography() 函数输出中获取角度? It didn't help # Find homograp
我尝试在以下 opencv/c++ 示例中运行代码片段 http://docs.opencv.org/3.1.0/d7/dff/tutorial_feature_homography.html#gsc
我看了这段代码,它给出了 http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.h
我让用户在两张图片上选择 5 个点,它们的大小不一样(也许这就是问题所在)。当用户在任意图像上选择一个点时,我将 Point2f 推到一个专用于该特定图像的 vector 。 所以在一个实例中我有以下
我试图在 Python 中使用 opencv 为 rgb 和 rotated 找到两个图像的单应矩阵: print(rgb.shape, rotated.shape) H = cv2.findHomo
当使用 findHomography() 时: Mat H = findHomography( obj, scene, cv::RANSAC , 3, hom_mask, 2000, 0.995 );
我正在尝试构建 OpenCV 附带的示例程序 brief_match_test.cpp,但是当我运行该程序时,我不断从 cv::findHomography() 函数中收到此错误: OpenCV Er
我正在使用 features2d(ORB、SIFT 等)进行一些对象检测 我正在使用 RANSAC 进一步研究单应性。我发现很多好的点被错误地标记为异常值。 对象(书)内部有很多不应该是异常值的异常值
我正在 OpenCV 中开发全景图/全景图应用程序,但遇到了一个我真的无法弄清楚的问题。要了解全景照片的外观,请查看全景图维基百科文章:http://en.wikipedia.org/wiki/Pan
我正在使用 OpenCV 的 SURF 特征检测来比较两个图像。当我选择两个相同的图像(有时选择相同的图像)时,我得到这个: OpenCV Error: Assertion failed (CV_I
我正在为 opencv 使用 python 绑定(bind)。我正在使用关键点检测和描述(即 SURF、SIFT、...)来查找包含在目标图像中的模板图像,但是有一个问题:模板可以在目标图像中“挤压”
我目前迷失在 OpenCV 文档中,正在寻找一些关于函数可能排序的指导,或者可能是 OpenCV 中我还没有遇到的函数...... 我正在跟踪摄像机馈送中的激光 Blob 到投影屏幕上的某个位置。到目
我已经检查过 stackOverflaw,尤其是在这个 link 中但它没有回答我的问题。 我使用 Ransac 和 OpenCv 计算单应性以匹配两张图片。这里对应的代码: Mat H = find
这里是Features2D + Homography 从打开的 cv 文档中查找已知对象的代码 #include #include #include #include #include #in
我无法使用 OpenCV 示例在 Android 场景中查找对象。我从 OpenCV4Android SDK 中获取预构建的静态库。我的安卓.mk # Open CV libraries in
作为调用 findHomography() 的结果,我得到了一个 3x3 矩阵 mtx[3][3]。该矩阵包含 mtx[0][2] 和 mtx[1][2] 中的翻译部分。但是我怎样才能从这个 3x3
我将 OpenCV 的函数 findHomography 与 RANSAC 方法结合使用,以便找到将两个图像与一组关键点相关联的单应性。 主要问题是我在任何地方都找不到函数输出的掩码矩阵的值是多少。
我是一名优秀的程序员,十分优秀!