我是在ubuntu10.04下用opencv2.3做一个连续捕捉摄像头视频的图像并将它保存成图片的程序,可是总是没有保存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是在ubuntu10.04下用opencv2.3做一个连续捕捉摄像头视频的图像并将它保存成图片的程序,可是总是没有保存相关的知识,希望对你有一定的参考价值。

我是用以下代码
#include "cv.h"
#include "highgui.h"
void main()

CvCapture* capture;
capture=cvCreateCameraCapture(0);
assert(capture!=NULL);
IplImage* frame;
cvNamedWindow("camera",1);
while(1)

frame=cvQueryFrame(capture);
if(!frame)
break;
cvShowImage("camera",frame);
cvSaveImage("~/Downloads/Image",frame);
if(cvWaitKey(33)>=0)
break;

cvReleaseImage(&frame);
cvDestroyWindow("camera");

一直查看不到保存的图片 求解决方法代码

这是我在Windows下实现保存图片的程序,亲测可用,按ESC键保存图片并退出,你可以参考一下。
#include "cv.h"
#include "highgui.h"

int main()

cvNamedWindow( "Example2_9", CV_WINDOW_AUTOSIZE );
CvCapture* capture;
capture = cvCreateCameraCapture( 0 );

IplImage* frame;
while(1)
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "Example2_9", frame );
char c = cvWaitKey(10);
if( c == 27 )

cvSaveImage("D:\\\\3.jpg",frame); //按ESC键保存图片到D:\\\\3.jpg
break;


cvReleaseCapture( &capture );
cvDestroyWindow( "Example2_9" );
参考技术A 第一,首先你要看 图片显示了没有???
第二,名字你写错了。cvSaveImage("~/Downloads/Image.bmp",frame)
还有opencv的问题 可以问我 我的707798286
参考技术B cvSaveImage("~/Downloads/Image",frame);
文件名要写扩展名。.jpg或.bmp
参考技术C 手提式白炽灯:用较小功率(多为200W以下)的白炽灯泡,安在一个小的反射罩内,反射罩固定在小的支架上。 3、光浴装置 可分局部或全身照射用二种。

Ubuntu安装opencv 为调用gpu模块

也真够折腾的。

事件背景:为了一个光流的提取处理,本来是3.1的opencv在include一些模块上出错,原因是opencv3.0以上的版本对模块进行了再分离,要contribute,但是contribute后还是解决不了,所以,选了2.4.11(因为之前在Windows下用过,知道哪些函数能调用).

这时在make的时候出现了类似nvcc warning : 的问题,然后就按照(http://blog.csdn.net/wang4959520/article/details/51392804)或者在cmake时加上参数-D BUILD_opencv_gpu=OFF,以为能成功了,可是又有 error: ‘NppiGraphcutState’ 类似的错误,这时,找到http://blog.csdn.net/caozhantao/article/details/51479172这篇博客,按它的说法,卸载2.4.11,改用2.4.13,在cmake的时候,用了

cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_gpu=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..

这下,都圆满编译通过了,而且nonfree等头文件也能include成功了。

但是在调用gpu头文件的时候又报错说没有#include <opencv2/gpu/gpu.hpp>,好吧,只能又重新编译,又按照http://www.cnblogs.com/CarryPotMan/p/5377921.html这个博客重新对2.3.13编译一遍,还是没解决。

最后想到可能是cuda不支持,就决定卸掉2.4.12,用2.4.12,还是按这个博客,编译,还是不行,好吧,结合了http://blog.csdn.net/xuezhisdc/article/details/48691797和http://blog.csdn.net/allyli0022/article/details/62859290来,用了:

CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=ON -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=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 ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D CUDA_GENERATION=Fermi .. 

并且将graphcuts.cpp中

将 #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

最后就解决了gpu模块调用的问题。

-----------------------------------------17年5月4号-------------------------------------------------

后来,又一次编译,为了解决:

OpenCV Error: Gpu API call (invalid device function) in call_resize_linear_glob, file /home/dog/opencv-2.4.12/modules/gpu/src/cuda/resize.cu, line 233
terminate called after throwing an instance of \'cv::Exception\'
what(): /home/dog/opencv-2.4.12/modules/gpu/src/cuda/resize.cu:233: error: (-217) invalid device function in function call_resize_linear_glob

Aborted (core dumped)

根据:https://github.com/opencv/opencv/issues/6580 和 https://github.com/opencv/opencv/issues/6577 最终确定用了:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DCUDA_CUDA_LIBRARY=/usr/local/cuda/lib64/stubs/libcuda.so -D CUDA_ARCH_BIN=5.2 -D CUDA_ARCH_PTX="" -D WITH_CUDA=ON -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=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 ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_NVCUVID:BOOL="1" .

这里的5 2是这样确定的:

根据:http://www.centoscn.com/CentOS/help/2015/0307/4816.html 用命令:

# nvidia-smi

得到我的GPU是:Tesla M40  

然后在:https://developer.nvidia.com/cuda-gpus  中查找,发现:

Tesla Data Center Products

GPUCompute Capability
Tesla P100 6.0
Tesla P40 6.1
Tesla P4 6.1
Tesla M60 5.2
Tesla M40 5.2
Tesla K80 3.7
Tesla K40 3.5
Tesla K20 3.5
Tesla K10 3.0

然后,就成功啦。

opencv最后还要:make -j8 和 sudo make install 不要忘了啊!

 

以上是关于我是在ubuntu10.04下用opencv2.3做一个连续捕捉摄像头视频的图像并将它保存成图片的程序,可是总是没有保存的主要内容,如果未能解决你的问题,请参考以下文章

VirtualBox虚拟机 UBUNTU 10.04系统怎么用USB转串口设备?

VirtualBox虚拟机 UBUNTU 10.04系统怎么用USB转串口设备?

Ubuntu10.04设置samba共享文件夹,出现问题

Ubuntu10.04下如何安装deb包

在 XAMPP (Ubuntu 10.04) 中安装 uploadprogress

Ubuntu10.04 编译并安装Linux 内核2.6.32.60版本及错误解决。