我知道这个问题已经在这里问了好几次,但是因为到目前为止还没有答案帮助我,所以我再次在这里发帖.
我做了什么:
我克隆了存储库https://github.com/Itseez/opencv,创建并更改为构建目录并使用以下命令编译OpenCV.
cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D BUILD_opencv_python2=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON -D WITH_CUDA=ON -D WITH_CUBLAS=ON -D CUDA_ARCH_BIN="2.0 3.0 3.5" ..
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
一切都编好了.后来我加入/usr/local/lib到/etc/ld.so.conf.d/opencv.conf和执行sudo ldconfig.最后,我补充道
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
Run Code Online (Sandbox Code Playgroud)
到我当地的bashrc.一切正常,我也可以执行cpp示例,但是一旦我尝试python示例或尝试在python中使用OpenCV,我得到:
ImportError:没有名为cv2的模块
我根据其他帖子尝试的事情:
手动复制cv2.so到/usr/local/lib/python2.7/dist-packages:没有用,因为我无法在任何地方找到cv2.so.
缺少numpy或numpy的多个版本:这里没问题,因为我只有一个版本的numpy.
额外:
我也尝试了与主页上最新来源相同的步骤:相同的结果.
我发现有几个资源说BUILD_NEW_PYTHON_SUPPORT现在没有正确的标志BUILD_PYTHON_SUPPORT,就像在早期版本中那样.由于两者都不适合我,我用过BUILD_opencv_python2.那是对的吗?
那么,这可能是什么问题?我的意思是,除了我的机器上没有cv2.so的事实.顺便说一句,我使用的是Ubuntu 14.04.
提前致谢.
我想使用函数distanceTransform()来查找非零像素到零像素的最小距离,以及最近零像素的位置.我调用函数的第二个版本,并将labelType标志设置为DIST_LABEL_PIXEL.一切正常,我得到最接近零像素的距离和指数.
现在我想将索引转换回像素位置,我认为索引将像idx =(row*cols + col)或类似的东西,但我必须发现OpenCV只计算零像素并使用此计数作为指数.因此,如果我得到123作为最近像素的索引,这意味着第123个零像素是最接近的.
OpenCV如何计算它们?可能是以行方式?
有没有一种有效的方法将指数映射回位置?显然,如果我知道OpenCV如何计算它们,我可以重新计算它们并跟踪计数和位置,但这看起来很愚蠢而且效率不高.
是否有充分的理由使用他们使用的索引?我的意思是,使用绝对索引有什么优势吗?
提前致谢.
编辑:
如果你想看看我的意思,你可以运行:
Mat mask = Mat::ones(100, 100, CV_8U);
mask.at<uchar>(50, 50) = 0;
Mat dist, labels;
distanceTransform(mask, dist, labels, CV_DIST_L2, CV_DIST_MASK_PRECISE, DIST_LABEL_PIXEL);
cout << labels.at<int>(0,0) << endl;
Run Code Online (Sandbox Code Playgroud)
您将看到所有标签都是1,因为只有一个零像素,但我应该如何找到该信息的位置(50,50)?
我正在尝试使用此处描述的方法修复深度图缺失的深度值。总结一下该方法:
超级简单,一切都很好。可以在此处找到显示结果的视频。
但是,我想知道为什么左侧和顶部图像边框仍然是黑色,尽管它们应该被修复(可以在视频中看到)。我的第一个想法是,这可能与边界插值(图像边界外的黑色像素)有关,但我预计这也会发生在其他图像边界上。我的第二个想法是,这是所使用的修复方法(Alexandru Telea 的方法)所特有的,但将其更改为基于纳维-斯托克斯的方法并没有改变结果。
有人可以向我解释为什么会发生这种情况以及如何告诉 OpenCV 修复这些区域(如果可能的话)吗?
提前致谢。