JMF调用摄像头粉屏的问题(win10 64位系统)

最近突然想做一个人脸识别的程序,图像的获取可以从本地或者摄像头获取。

1、从本地获取比较简单,不多说。

2、从摄像头获取图片。网上查了一下,都是用的JMF(但是JMF已经很久没有更新,而且只支持32位的JDK,如果知道有更好的麻烦推荐一下!)

下载JMF(http://www.oracle.com/technetwork/java/javase/download-142937.html)

安装

安装完之后桌面上回出现JMStudio的快捷图标,

 点开测试一下,file->capture;

摄像头驱动正常加载,点击OK,然后

我靠,这什么鬼?一片粉啊,一定要这么嫩吗 -_-||。 晃动一下窗口,会显示图像,但是是卡住的。

摄像头正常打开了,但是显示不了画面,这样完全没用啊!于是就去网上查了一下,没有答案,再看看回答时间,瞬间怀疑自己是不是用了个老古董了!

没办法,先试着写程序吧

 1 public static Component loadDiver()
 2     {
 3         //String str1 = "vfw:logitech usb video camera:0";
 4         String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
 5
 6         deviceInfo = CaptureDeviceManager.getDevice(str2);   //加载设备驱动
 7         mLocator = deviceInfo.getLocator();
 8         try
 9         {
10
11             player = Manager.createRealizedPlayer(mLocator);  //获取就绪的播放器
12
13             Component cp;
14             if((cp = player.getVisualComponent())!=null)
15             {
16                 player.start();
17                 return cp;                               //返回窗体组件
18             }
19         }
20         catch(Exception e)
21         {
22             e.printStackTrace();
23         }
24         return null;
25     }

运行之后发现一样出现粉屏的问题, 弄了一会儿发现好像在画面上覆盖了一层JLabel或者JTextArea就可以正常显示图像(感觉好low啊/捂脸),可能是打开的方式不对!

最后无意中发现,只要窗体对准电脑屏幕的最左边就可以正常显示了,这程序是不是有强迫症啊?_?

好吧,虽然莫名其妙,但是也勉强算是解决了显示问题了。

下面就是截图了,于是就用了笨办法,屏幕截图(求聪明的办法^_^):

 1 BufferedImage buffImg = null;
 2 try
 3 {
 4    buffImg = (new Robot()).createScreenCapture(new
 5    Rectangle(0, 100, c1.getWidth(), c1.getHeight()-100));   //c1是上面方法返回的Component
 6 }
 7 catch(AWTException e1)
 8 {
 9    e1.printStackTrace();
10 }
11 try
12 {
13    ImageIO.write(buffImg, "jpg", new File(path));
14 }
15 catch(IOException e1)
16 {
17    e1.printStackTrace();
18 }

成功获取图像

总结:JMF调用摄像头产生粉屏,把窗体放在屏幕最左侧可以正常显示,具体原因未知!个人猜测可能是系统不兼容的造成。

时间: 2024-08-26 02:58:14

JMF调用摄像头粉屏的问题(win10 64位系统)的相关文章

win10 64位系统中安装多个jdk版本的切换问题

由于电脑安装了myeclipse2017,同时又安装了idea2017,idea是最新版,必须使用jdk1.8以上,而myeclipse中的项目又需要低版本的jdk,所以在电脑上之前安装配置好了jdk1.8,后来又要安装jdk1.7,可以来回切换,但是过程中遇到了很多问题,总结一下. 安装jdk后,我们配置环境变量,先特别注意一个问题: 更改环境变量的问题,我搜了很多方案,一个个的试,最终解决,主要方案有以下几个: 1.为了从jdk1.8切换到1.7,首先做的是将环境变量中的 JAVA_HOME

用U盘制作并安装WIN10 64位原版系统的详细教程(该方法应该适用于任何一版的原版操作系统)

昨天搞了一台办公电脑,因为是开发机,要装的是windows server 2008(因为服务器用这个系统,所以开发的时候尽量保持与服务器环境一致.) 大概1年前在淘宝天猫店买了个三星的移动光驱,光盘也有. 但是一年没用,尼玛现在拿出来总是读不到,光驱灯都不闪. 感觉应该是光驱问题.日了dog....这tb真的是一堆假货.... 然后就开始用U盘来安装, 第一次尝试的方法是,用大白菜里面提供的那个安装自定义ISO文件那个,成功进入 windows is loading files 然后进入到安装界

win10 64位SSDT函数索引动态查找

在win10 64位下SSDT是不导出的.同时如果你要hook某个函数时你要知道他的索引,以前都是调试或者网上找然后硬编码进去.这里动态找.原理是上层调用的所有函数都经过ntdll 然后进入0环,进入0时ntdll模块里面很定有索引啊,因此去ntdll找到对应函数的代码,就能找到对应的索引.第1步先把ntdll 读入内存.查看内存开始动态查找 进入GetFunctionAddress先找到ssdt进入GetExportSsdtIndex进入GetExportOffset找到函数对应在ntdll中

win10 64位 汇编环境

masm6或者masm5 下载. dosbox 下载安装 为何要用这个呢,因为 机子是64位的,dosbox 模拟32位的用来执行生成的exe文件 masm 安装好后,有个bin文件:个人建议将其设置环境变量.那么命令 ml masm link 这三个命令就随时可用了,免得到处复制 编写asm文件,使用ml命令一步到位生成exe 或者masm命令生成obj再用link命令生成exe  注意这三个命令是在win1064位自带的cmd上运行的 生成的exe文件怎么执行呢?显然在win10 64位下,

window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法

服务器是windows server2008 64位系统,项目中需要用到Microsoft.Office.Interop组件,包括excel.word.ppt等. 重点一: 步骤 1.在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务" 2.依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置" 3.在"

win10 64位 python3.6 django1.11 MysqlDB No module named 'MySQLdb' 安装MysqlDB报错 Microsoft Visual C++ 14.0 is required

在python3.6中操作数据库,再按python2.7安装MySQLdb进行数据库连接已经不可用了,我使用的是另外一个方法:PyMySQL,安装好之后还是不能直接连接MySQL的,启动项目后报No module named 'MySQLdb' 解决方案: 在项目的__init__()文件中添加如下代码: import pymysql pymysql.install_as_MySQLdb() 这时再次启动项目正常 win10 64位 python3.6 django1.11 MysqlDB No

WIN10 64位下VS2015 MFC直接添加 halcon 12的CPP文件实现视觉检测

近段时间开始接触halcon,但是在VS2015里面使用,无论是配置还是生产EXE文件,都不如意. 加上网上的教程很多,经过多次测试,其实有很多地方无需修改,如果修改的太多也失去了直接添加封装的意义. 我的环境为 WIN10 64位 halcon12 用64位到处C++ 文件,VS2015免费共享版. (如果要生成32位的话,需要halcon12 用32位程序  导出C++,并且需要把VC切换为X86平台, 库目录改为 C:\Program Files\MVTec\HALCON-12.0\lib

WIN10 64位 JDK的安装

因为电脑系统换掉,重装系统,重新配置了一下环境,安装JDK,现记录一下过程,以便下次查询使用. 官网下载JDK,地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 这里我安装的是jdk-8u91-windows-x64 注意这里的是64位WIN10的操作系统  32位的WIN操作系统请下jdk-8u91-windows-i586  至于MAC的 请下对应版本   安装JDK 这里我是建议

Win10中virtualbox新建虚拟机不能设置64位系统解决

问题描述 在Win10中,安装virtualBox后,新建虚拟电脑时,所有的操作系统都没有64位. 解决 进入控制面板->卸载程序->启用或关闭windows功能->取消hyper-v前面的勾. 版权声明:本文为博主原创文章,未经博主允许不得转载.