草庐IT

computer-vision

全部标签

c++ - OpenCL:是否可以使用模板化对象作为 Boost::compute 的内核参数?

我的内核函数签名如下:templatevoidkernel(constType1arg1,constType2arg2,Field*results){//Sisknownatcompiletime//Fieldmightbefloatordouble//Type1isanobjectholdingdataandalsomethods//Type2isanobjectholdingdataandalsomethods//Thecomputationstarthere}我知道可以使用c++特性的一个子集来使用extension编写内核到AMD的OpenCL实现,但生成的代码仅限于在AMD卡

c++ - 使用 OpenCV 的 Kmeans 聚类中的马哈拉诺比斯距离

我已经完成了Kmeans聚类,并使用OpenCVC++API找到了聚类中心。kmeans(data_points,clusterCount,labels,TermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,10,1.0),3,KMEANS_PP_CENTERS,cluster_centers);然后我使用欧几里德距离找到最近的集群,针对所有集群中心的新数据点>.intdistance=find_EucledianDist(new_datapoint,cluster_centers);如何使用马哈拉诺比斯距离而不是欧氏距离?我知道我必须计算协方差矩

c++ - 理解 OpenCV 的 undistort 函数

我希望在不更改相机矩阵的情况下,使用我为相机计算的畸变系数来消除图像的畸变。这正是undistort()所做的,但我想将输出绘制到更大的Canvas图像上。当我尝试这样做时:Matdrawtransform=getOptimalNewCameraMatrix(cameraMatrix,distCoeffs,size,1.0,size*2);undistort(inputimage,undistorted,cameraMatrix,distCoeffs,drawtransform);它仍然写出相同大小的图像,但只有放大两倍且未失真结果的左上四分之一。Likethedocumentatio

c++ - 视差图的 OpenCv 深度估计

我正在尝试使用OpenCV从立体对图像估计深度。我有视差图和深度估计可以获得:(Baseline*focal)depth=------------------(disparity*SensorSize)我使用block匹配技术在两个校正后的图像中找到相同的点。OpenCV允许设置一些block匹配参数,例如BMState->numberOfDisparities。block匹配过程之后:cvFindStereoCorrespondenceBM(frame1r,frame2r,disp,BMState);cvConvertScale(disp,disp,16,0);cvNormalize

c++ - 深度图像上的表面法线

如何在不使用点云库(PCL)的情况下估计深度图像(像素值以毫米为单位)上点I(i,j)的表面法线?我经历了(1),(2),和(3)但我正在使用C++标准库或openCV寻找对每个像素表面法线的简单估计。 最佳答案 你需要知道相机的内在参数,这样你也可以知道相同单位(mm)的像素之间的距离。这个像素之间的距离对于距离相机一定距离(即中心像素的值)显然是正确的如果相机矩阵是K,通常是这样的:f0cxK=0fcy001然后,获取像素坐标(x,y),然后使用以下方法定义从相机原点通过像素(在相机世界坐标空间中)的光线:xP=inv(K)*y

c++ - OpenCV 平方差和速度

我一直在使用openCV进行一些block匹配,我注意到它的平方差和代码与像这样的直接for循环相比非常快:intSSD=0;for(inti=0;i如果我查看源代码以查看繁重的工作发生在哪里,OpenCV人员让他们的for循环在循环的每次迭代中一次执行4个平方差计算。进行block匹配的函数如下所示。int64icvCmpBlocksL2_8u_C1(constuchar*vec1,constuchar*vec2,intlen){inti,s=0;int64sum=0;for(i=0;i此计算适用于无符号8位整数。他们在此函数中对32位float执行类似的计算:doubleicvCm

c++ - 使用 OpenCV 丢弃细胞图像中的异常值 SIFT 关键点

我正在处理生物信息学的任务,需要从一些细胞图像中提取一些特征。我使用SIFT算法提取图像内部的关键点,如图所示。正如您在图片中也看到的(红色圈出),一些关键点是异常值,我不想计算它们的任何特征。我使用以下代码获得了cv::KeyPointvector:constcv::Matinput=cv::imread("/tmp/image.jpg",0);//Loadasgrayscalecv::SiftFeatureDetectordetector;std::vectorkeypoints;detector.detect(input,keypoints);但我想从vector中丢弃所有那些关

c++ - OpenCV 3.0中findEssentialMat函数的使用

我目前正在开展一个项目,使用SIFT/SURF从两张图像中恢复相机的6-DOF-Pose。在旧版本的OpenCV中,我使用findFundamentalMat找到基本矩阵,然后通过已知相机固有K进一步得到基本矩阵,最终通过矩阵分解得到R和t。结果非常敏感且不稳定。我看到这里有人有同样的问题OpenCVfindFundamentalMatveryunstableandsensitive有人建议使用在最新版本的OpenCV3.0中实现的Nister的5点算法。我读过一个例子OpenCVdocumentation在示例中,它使用focal=1.0和Point2dpp(0.0,0.0)。这是相

c++ - 检测图像中矩形的最简单*正确*方法是什么?

我正在尝试寻找检测图像中矩形的最佳方法。我最初的想法是使用Houghtransform对于线,并选择线的组合,其中两条线在下部和上部都与相同的两条线相交,但这还不够。会使用cornerdetector连同霍夫变换一起工作? 最佳答案 查看您的OpenCV发行版中的/samples/c/squares.c。这个例子提供了一个方形检测器,它应该是一个很好的开始。我的回答here也适用。 关于c++-检测图像中矩形的最简单*正确*方法是什么?,我们在StackOverflow上找到一个类似的问

c++ - 在 CvSVM 上需要帮助

我找不到关于如何将SVM参数传递给opencvcvSvm类的正确引用。我得到了参数列表,但没有任何关于如何将参数转换为CV数据结构的教程。请问有什么帮助吗? 最佳答案 构造一个CvSVMParams对象。其成员是:svm_type:要使用的SVM算法kernel_type:SVM核形式degree:多项式内核的度数gamma:多项式、RBF或sigmoid内核的尺度coef0:多项式或sigmoid内核的偏移量C:选择支持vector的C比nu:nu-SVR算法的nu值p:eps-SVR的p值class_weights:C-SVM的