OpenCV打开摄像头(二)

VS2010 + OpenCV2.4.9打开摄像头:

方法一:

参考博文:OpenCV 获取摄像头,新建窗口显示摄像头视频,内含几个函数的介绍~

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main()
{
	//declare IplImage pointer
	IplImage *pFrame = NULL;

	//obtain the camera
	CvCapture *pCapture = cvCreateCameraCapture(0);

	//create a window
	cvNamedWindow("video",1);

	//show the video
	while(1)
	{
		pFrame = cvQueryFrame(pCapture);
		if(!pFrame)
			break;
		cvShowImage("video",pFrame);
		//char c = waitKey(33);
		char c = cvWaitKey(33);
		if(c == 27)  //ASCII Esc key
			break;
	}
	cvReleaseCapture(&pCapture);
	cvDestroyWindow("video");
	return 0;
}


方法二:

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main()
{
	VideoCapture cap(0);
	Mat frames;
	while(1)
	{
		cap >> frames;
		imshow("video",frames);
		char c = cvWaitKey(33);
		if(c == 27)  //ASCII Esc key
		   break;
	}
	cvDestroyWindow("video");
	return 0;
}
第一种方法应该是一种比较经典和保险的办法。方法二较简单,但是应该存在缺陷。

另外,通过IPLImage* pFrame=cvQueryFrame(pCaptrue) 所获取图像pFrame是倒着的,虽然cvShowImage显示为正着的,以及cvSaveImage都为正着的,是因为这两个函数先进行了数据排列判断,但实际数据是倒着排列的。可以查看pFrame.origin是1。而正常cvLoadImage进来的图像pFrame.origin是0。因此,对于cvQueryFrame后获取的图像pFrame先要进行flip,即:cvFlip(pFrame);此时图像数据为直观所显示的图像一致了。

OpenCV是一个开源计算机视觉库,它支持多种编程语言,包括Java。要在Java中使用OpenCV打开摄像头,你需要做以下几个步骤: 1. **添加依赖**:首先,在你的项目中引入OpenCV的Java版本。你可以从OpenCV官方网站下载适合你的项目的jar文件,或者通过Maven或Gradle集成管理工具自动添加。 2. **初始化OpenCV**:在Java程序中,通常会有一个`System.loadLibrary(Core.NATIVE_LIBRARY_NAME)`语句,用于加载OpenCV的本地库。 ```java System.loadLibrary(Core.NATIVE_LIBRARY_NAME); ``` 3. **获取CameraCaptureDeviceManager**:这个类提供了对摄像头设备的访问。 ```java import org.opencv.videoio.VideoCapture; VideoCapture capture = new VideoCapture(); capture.open(0); // 0表示默认的第一个摄像头 ``` 4. **检查并打开摄像头**:检查设备是否可用,并进行打开操作。 ```java if (!capture.isOpened()) { System.out.println("无法打开摄像头"); return; } ``` 5. **处理视频流**:读取摄像头捕获的帧并进行图像处理或显示。 ```java Mat frame = new Mat(); // 创建一个矩阵来存储每一帧 while (true) { capture.read(frame); // 读取一帧数据 if (frame.empty()) break; // 如果读取失败,退出循环 // 进行必要的图像处理... // 然后在这里显示帧,如imshow函数 // 最后别忘了等待按键事件释放,如waitKey(1) } capture.release(); // 关闭摄像头 destroyAllWindows(); // 清理所有窗口 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值