草庐IT

opencv_gpu

全部标签

c++ - C++ AMP 能否在没有兼容 GPU 的机器上运行?

我了解C++AMP由支持DirectX11的GPU加速。但是,我的问题是,如果编译的C++AMP程序在没有DirectX11兼容GPU的机器上运行,会发生什么?它是否被DirectCompute的某些软件实现所模拟?它是否在CPU上执行(可能使用SSE风格的指令)?或者,它只是无法执行吗? 最佳答案 事实上,C++AMP有一个称为WARP(又名“MicrosoftBasicRenderDriver”)的CPU回退(多核加SSE)实现:http://www.danielmoth.com/Blog/Running-C-AMP-Kerne

c++ - 用opencv对线条进行分类

我正在做一个图像分类项目,我使用边缘检测从图像中提取了曲线,并且需要根据它们的曲率对它们进行分类。例如下图中有3种线,左边的线曲率好,中间的线曲率还不错,右边的线曲率很差。谢谢你的帮助 最佳答案 如果您正在处理图像,您可以知道与您所显示的形状类似的形状是否包含“平滑”或“锐利”的边缘。您可以计算结构矩阵(或图像张量矩阵)的特征值和特征向量。对于属于直边或平滑边的像素,其中一个特征值会比另一个大得多。如果像素是角点或曲线点,则两个特征值可能都很大且相似。然后我建议在你的形状的像素上测量这些特征,并根据你的需要训练一个分类器。你几乎可以

c++ - unsigned char ** 到 opencv mat

我快到了,但我不太明白如何转换unsignedchar**toacv::Mat我知道cv::Mat的.data部分是uchar*我正在使用一个以...的形式返回和图像的函数unsignedchar**output;但我的其余代码使用cv::Mat的。我也没有我正在使用的库的源代码,所以我真的不知道它在做什么。编辑谢谢大家的帮助,我已经做到了...cv::MatTempMat=cv::Mat(h,w,CV_8UC1,*output);imshow("thisisatest",TempMat);但是图像是黑色的,所以我现在需要查明那里是否真的有任何东西。很抱歉缺乏研究,我的截止日期很紧,不

c++ - OpenCV:一种简单明了的灰度图像着色方法

什么是“着色”灰度图像的直接方法。通过着色,我的意思是将灰度强度值移植到新图像中的三个R、G、Bchannel之一。例如,强度为I=50的8UC1灰度像素应该变成强度为BGR=(50,0,0)当图片被着色为“蓝色”时。例如,在Matlab中,我所要求的可以简单地用两行代码创建:color_im=zeros([size(gray_im)3],class(gray_im));color_im(:,:,3)=gray_im;但令人惊讶的是,我在OpenCV中找不到任何类似的东西。 最佳答案 好吧,同样的事情需要在C++和OpenCV中做更

c++ - 构建 OpenCV 时出错::MonitorFromRect 未在此范围内声明

我正在尝试构建OpenCVversion2.4.8以将其与CodeBlocks和MinGw一起使用。我按照here中的说明进行操作.但是我收到以下错误。我不知道如何解决它。我在网上搜索没有找到任何有用的东西。This也没有解决。我不想弄乱openCV代码,我打算在我的项目中使用OpenCV,这是我第一次使用它。[26%]Builttargetpch_Generate_opencv_highgui[26%]BuildingCXXobjectmodules/highgui/CMakeFiles/opencv_highgui.dir/src/window_w32.cpp.objC:\Prog

c++ - 在 OpenCV 中查找多边形边界内的平均颜色

背景我正在尝试创建一个实用程序,该实用程序将使用OpenCV返回给定多边形内的平均像素颜色。多边形将通过4个点定义,但不一定是矩形/正方形。例如,以下结构是预期的:A__________BA_______B//\\//\\D/__________/CD\_______\C给定OpenCV中的cv::Mat图像和由点(A、B、C、D)定义的多边形。我知道点A、B、C和D,但我想计算多边形内的平均像素颜色。我想从OpenCV社区获得一些关于如何最有效地做到这一点的建议。研究完成另一个postStackOverflow上建议使用drawContours绘制等高线函数然后取mean围绕轮廓的边

c++ - 在 opencv 中索引矩阵的最佳方法

比方说,A和B是相同大小的矩阵。在Matlab中,我可以使用如下所示的简单索引。idx=A>0;B(idx)=0如何在OpenCV中执行此操作?我应该只使用for(i=0;...rows)for(j=0;...cols)if(A.at(i,j)>0)B.at(i,j)=0;是这样的吗?有没有更好(更快、更有效)的方法?此外,在OpenCV中,当我尝试Matidx=A>0;变量idx似乎是一个CV_8U矩阵(不是bool值而是整数)。 最佳答案 您可以轻松转换此MATLAB代码:idx=A>0;B(idx)=0;//sameasB(A

c++ - 使用opencv SVM训练火灾检测

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我正在使用SVM,因为我需要ML来训练我的分类器,我在几篇关于火灾探测的论文中看到他们使用了SVM和逻辑回归,但由于2.4.9中没有逻辑回归,我打算使用支持vector机。我正在使用opencv2.4.9,因为人们说opencv3有问题。我是新手所以如果我们从基础开始会很有帮助我准备了几个准备提取成帧的火和非火视频。我是opencv和分类器的新手。我的问题是训练分类器特别是SVM的基础知识是什么,我需要什

c++ - 如何正确地将 OpenCV 库链接到 Windows 上的 Eclipse?

在过去的几个小时里,我一直在尝试让一个基本的OpenCV程序在我的EclipseMarsIDE中运行。该程序由以下main.cpp组成:#include#include#includeusingnamespacecv;usingnamespacestd;intmain(intargc,char**argv){if(argc!=2){cout到目前为止我做了什么:安装了MinGW(在E:\NVPACK\MinGW中)并将其bin文件路径添加到我的环境变量中。在E:\opencv安装了OpenCV2.4.12。安装文件夹内有“build”和“sources”文件夹。使用MinGWGCC工具

c++ - 图形驱动程序如何以编程方式从 CPU 到 GPU 进行通信?

很长一段时间以来,我一直想知道CPU指令如何与GPU交互。据我了解,CPU有一组它可以理解和执行的指令(机器代码),驱动程序是一种通过CPU与GPU通信的软件。但是这个软件是如何通信的呢?CPU是否包含明确告诉它与另一个设备通信的某些汇编指令?我能否编写汇编代码或C/C++代码来与显卡通信,就像驱动程序在特定机器环境下所做的那样? 最佳答案 与PC上的任何硬件设备一样,显卡将对特定内存地址和可能的输入/输出端口的读写做出响应。PCI总线定义了它们的分配方式。没有特定的CPU指令来与显卡通信,在写入内存位置的情况下,它仅使用普通指令来