可以用C++调用openCV写成dll,接收camera数据给C#调用。后来感觉有点复杂就转而使用EmguCV了。
但是使用中发现两个bug,其一是无法得到摄像头的名字(这个可以通过C#本身枚举系统设备实现,但是这之后还是遇到一个bug,摄像头名字跟编号不对应,有两个摄像头的话,用VidioCapture打开后是另外一个),其二是通过使用SetCaptureProperty方法修改摄像头参数时无效,网上搜了半天竟然没有人遇到类似问题,也无无从解决,真是莫名其妙。
又考虑到后续还有很多图像处理工作要用OpenCV,在C#里通过EmguCV调用效率恐怕也难以保证。
Image<Bgr, Byte>[] sources;
OpenFileDialog open = new OpenFileDialog();
openCheckFileExists = true;
openMultiselect = true;
openFilter = "打开|jpg";
openShowDialog();
sources=new Image<Bgr,byte>[openFileNamesLength];
for (int i = 0; i < openFileNamesLength; i++)
{
sources[i] = new Image<Bgr, byte>(openFileNames[i]);
}
pictureBox1Image = sources[0]Bitmap;
pictureBox2Image = sources[1]Bitmap;
pictureBox3Image = sources[2]Bitmap;
Stitcher stitcher = new Stitcher(true);
Image<Bgr, byte> result = stitcherStitch(sources);
pictureBox4Image = resultBitmap;
在windows下检查摄像头驱动是否安装完好,是否使用正常。可以通过查看驱动或者打开摄像头进行确认。
如果第一步确认没有问题,右键点击我的电脑,选择的电脑-》管理->服务-》找到Vmware Usb Arbitration service启动它。启动虚拟机,进入ubuntu *** 作系统,
点击vmware player左上方的player菜单,选择移动设备管理,从中选择将camera给connect
打开shell终端,输入sudo apt-get install cheese,安装cheese工具,可能会提示需要输入密码,且需要一定的时间。
在shell中启动cheese,就会自动打开摄像头,如果想要关闭,就点击关闭按钮或者在shell中使用按键ctrl+c
使用cheese打开摄像头后,可以通过点击下方的按钮,进行拍照,录像等 *** 作。
如果想要在windows中使用摄像头就要和第三步一样,选择camear disconnect,将摄像头的控制权返回给windows。
以上就是关于在c++写一个类接收camera数据全部的内容,包括:在c++写一个类接收camera数据、Emgu CV 图像拼接或者用其他方法在C#如何实现、Emgucv打开usb摄像头的问题有没有精通或者懂的,请进等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)