草庐IT

OpenCV_CUDA_VS

全部标签

c++ - 错误 : cannot declare variable ‘bg’ to be of abstract type ‘cv::BackgroundSubtractorMOG2’ in OpenCV 3

我最近在我的ubuntu14.10系统中安装了OpenCv并且我正在运行一个程序并且正在运行cv::BackgroundSubtractorMOG2我遇到了一个错误。错误是cannotdeclarevariable‘bg’tobeofabstracttype‘cv::BackgroundSubtractorMOG2’为什么我会遇到这个错误我的代码示例intmain(intargc,char*argv[]){Matframe;Matback;Matfront;vector>hand_middle;VideoCapturecap(0);BackgroundSubtractorMOG2bg;

[Python图像处理] 使用OpenCV创建色调图

使用OpenCV创建色调图色调映射和高动态范围成像应用色调映射相关链接色调映射和高动态范围成像高动态范围(HighDynamicRange,HDR)技术用于摄影成像,以再现比标准数字成像或摄影技术更大的动态范围的亮度。标准成像技术仅允许在一定范围内区分亮度,在范围之外,由于在明亮的区域没有差别,因此没有可见的特征,因为所有的东西都是纯白色的,而在黑暗的区域同样没有差别,因为所有东西都是纯黑的。图像中色调值(可测量光强度)的最大值和最小值之间的比率被称为动态范围。由于打印和显示对比度的局限性,必须压缩输入HDR图像的扩展亮度范围才能使其可见,将HDR图像渲染到标准监视器或打印设备的方法称为色调映

java - 性能优化 : C++ vs Java not performing as expected

我编写了两个程序来实现一个简单的矩阵乘法算法,一个用C++编写,一个用Java编写。与我的预期相反,Java程序的运行速度比C++程序快大约2.5倍。我是C++的新手,希望就我可以在C++程序中进行哪些更改以使其运行更快提出建议。我的程序从这篇博文中借用了代码和数据http://martin-thoma.com/matrix-multiplication-python-java-cpp.以下是我正在使用的当前编译标志:g++-O3main.ccjavacMain.java以下是当前的编译器/运行时版本:$g++--versiong++.exe(GCC)4.8.1Copyright(C)

OpenCv(C++)学习笔记二——视频的读取与输出

OpenCv学习笔记二——视频的读取与输出视频的读取视频的输出视频的读取cv::VideoCapture类是读取视频的,cv::VideoCapture既支持视频文件的读取,也支持从视频捕捉文件中读取视频。cv::VideoCapture类创建对象的方式如下三种:cv::VideoCapturecapture(conststring&filename,);//第一种:从输入的文件名对应文件中读取cv::VideoCapturecapture(intdevice);//第二种:从视频捕捉设备ID中读取cv::VideoCapturecapture();//第三种:调用无参构造函数创建对象第一种方

c++ - OpenCV 3.0 - 如何从 CSV 字符串创建 cv::Mat?

我正在尝试从我从python脚本通过管道传输的CSV字符串创建一个cv::Mat。我目前正在使用python2.7、C++和OpenCV3.0,我所能找到的只是如何在OpenCV2.4中执行此操作,但问题是它与3.0有很大不同,后者以某种方式使用了ml::TrainData。我不明白它是如何工作的,也没有示例代码!:-(我的python脚本所做的是将np.array传输为CSV,它看起来像这样:importsysimportnumpyasnpimportcsvcsvToSend=csv.writer(sys.stdout,delimiter=',')data=np.array([[3,

c++ - Opencv cv::waitKey() 返回值

我正在调试一些在Ubuntu14上使用OpenCV的C++代码,众所周知,它可以在Ubuntu12上运行,也可能与其他OpenCV库构建一起运行。之前是什么intkey_pressed=waitKey(0);cout但此代码无效,在输出中我有key_pressed1048603此代码有效:charkey_pressed=cv::waitKey();cout此代码有效,在输出中我有key_pressed27这种行为的原因是什么?附言documentationsayscv::waitKey()返回int,那么我们为什么要把它转换成char? 最佳答案

c++ - OpenCV 无法识别 Mat 大小

我正在尝试使用定义400x400垫子的OpenCV打印图像:plot2=cv::Mat(400,400,CV_8U,255);但是当我尝试打印这些点时,奇怪的事情发生了。y坐标仅打印前100个值。也就是说,如果我打印点(50,100),它不会打印在列的第100/400部分,而是打印在最后。不知何故,400列变成了100。例如,运行时:for(intj=0;j(20,j)=0;}cv::imshow("segundapared",plot2);显示如下(划线部分为上面代码对应的部分):一条达到95的线几乎占据了所有400个点,而它本应只占据屏幕的95/400。我做错了什么?

c++ - OpenCV C++ 多线程

我在4个不同的Mat对象上调用了4x这个opencv图像处理函数。voidprocessBinary(Mat&binaryMat){//imageprocessing}我想对其进行多线程处理,以便所有4个方法调用同时完成,但让主线程等待每个线程完成。例如:intmain(){Matm1,m2,m3,m4;//performeachofthesemethodssimultaneously,buthavemainthreadwaitforallprocessBinary()callstofinishprocessBinary(m1);processBinary(m2);processBin

c++ - 清理DLL : _endthreadex() vs TerminateThread()中的线程

由于restrictionsonDllMain(我知道这对DLL中的全局和静态对象构造函数和析构函数同样适用),像带异步文件写入/刷新线程的单例记录器这样的简单事情变得太棘手了。单例记录器位于DLL中,并且对可执行文件的加载和卸载时的影响有限。我可以强制该可执行文件在使用前调用它的DLL初始化函数,因此在初始化函数中,我可以使用关键部分来保护一个变量,该变量告诉DLL是否已经初始化或这次是否需要初始化。通过这种方式避免了DllMain的初始化,这将导致死锁,因为我需要从初始化启动线程,并且线程使用DllMain的原因调用DLL_THREAD_ATTACH,并且获得与我们在DllMain

c++ - OpenCV VideoWriter 大小问题

我正在尝试读取视频文件,对其进行处理,然后将处理后的帧写入输出视频文件。但是,我收到以下错误:OpenCVError:Assertionfailed(img.cols==width&&img.rows==height&&channels==3)inwrite,file/.../opencv-cpp/modules/videoio/src/cap_mjpeg_encoder.cpp,line829terminatecalledafterthrowinganinstanceof'cv::Exception'what():/.../opencv-cpp/modules/videoio/src