我是在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");
一直查看不到保存的图片 求解决方法代码
#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 Workstation Products
GPU | Compute Capability |
---|---|
Tesla K80 | 3.7 |
Tesla K40 | 3.5 |
Tesla K20 | 3.5 |
Tesla C2075 | 2.0 |
Tesla C2050/C2070 | 2.0 |
Tesla Data Center Products
GPU | Compute 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转串口设备?