调过摄像头的指点一下,显示白屏

liqian99 2008-03-07 09:16:07
用Coolpad268开发,直接借用了ICAMERA API中的例子,调试很长时间,怎么显示的还是白屏,哪位做过指点一下.
谢谢

原码如下:
static int CApp_StartCameraInPreviewMode(CApp * pme)
{
int nErr;
int nRet;
//boolean bTrue;

//IBitmap *pFrame;
//AEEBitmapInfo bi;

nErr = ISHELL_CreateInstance(pme->a.m_pIShell,AEECLSID_CAMERA,(void**)&pme->m_pICamera);
if(nErr)
{
return nErr;
}
nRet =ICAMERA_RegisterNotify(pme->m_pICamera,CApp_CameraNotify,pme);
if(nErr)
{
return nErr;
}
nErr = ICAMERA_SetDisplaySize(pme->m_pICamera,&pme->m_sizePreview);
if(nErr)
{
return nErr;
}
pme->m_sizeFrame.cx = 176;
pme->m_sizeFrame.cy = 198;
ICAMERA_SetSize(pme->m_pICamera,&pme->m_sizeFrame);

nErr = ICAMERA_Preview(pme->m_pICamera);
if(nErr != SUCCESS)
{
return nErr;
}

return SUCCESS;
}

static void CApp_CameraNotify(void *pUser,AEECameraNotify *pn)
{
CApp *pme = (CApp*)pUser;

DBGPRINTF("\n Inside Notify\n");
if(!pme || !pn){
return;
}

switch(pn->nStatus)
{
case CAM_STATUS_START:
DBGPRINTF("\n Inside start\n");
break;
case CAM_STATUS_FRAME:
{
IBitmap *pFrame;
AEEBitmapInfo bi;

DBGPRINTF("\n Inside Display\n");
if(SUCCESS != ICAMERA_GetFrame(pme->m_pICamera,&pFrame)){
return;
}

IBITMAP_GetInfo(pFrame,&bi,sizeof(bi));
IDISPLAY_BitBlt(pme->a.m_pIDisplay,0,0,bi.cx,bi.cy,pFrame,0,0,AEE_RO_COPY);
IBITMAP_Release(pFrame);
IDISPLAY_Update(pme->a.m_pIDisplay);
break;
}
case CAM_STATUS_DONE:
DBGPRINTF("CAM_STATUS_DONE");
break;
case CAM_STATUS_ABORT:
DBGPRINTF("CAM_STATUS_ABORT\n");
break;
}
}
...全文
1749 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liqian99 2008-03-10
  • 打赏
  • 举报
回复
  我们是做条码识别的.
  其实只要取到frame的那个图片就行,对图片进行识别,我们在其它平台的都是这样开发的,主要是考虑速度问题.并不需要再进行拍摄.希望用320*240是考虑识别效果,很少的差别可能对将来的解码效果影响很大.其它大小的我需要转换成320*240,不可避免地会有一点点失真.
 而有没有微距则影响效果很大..

 我们的客户已帮我们联系厂家了,看能不能给些技术支持.

              非常谢谢您
hhygcy 2008-03-10
  • 打赏
  • 举报
回复
国内的Brew手机我都没有接触过,不知道是否有区别。
好像国外要320*240的Brew手机都不是很多, 你们需要做些什么动态的图像识别还是说拍照完成以后识别?
还是纯粹是拍照的项目?
liqian99 2008-03-08
  • 打赏
  • 举报
回复
另问一句,双模的同普通的c网的brew手机,在应用开发上区别大吗?
liqian99 2008-03-07
  • 打赏
  • 举报
回复
它sheet上写的是v3.1.0
当时选它是看到联通的店里它的手机最多,应同联通是有某种合作关系,而且去了很多家,这是唯一有微距的.因为是做C网的,方便市场部门推广.
 当下移植的项目应用主要用到拍照和上网功能,摄像头一定要好些.将来应用可能要取camera的frame,320*240的屏更好些.
 有没有其它好手机推荐一款,实在不行的话再买一部.

谢谢

hhygcy 2008-03-07
  • 打赏
  • 举报
回复
主要还是不熟悉国内Brew的手机以及开发情况
我都不知道这个手机是Brew的, 而且国内的手机也到了3.1.5的SDK了?
liqian99 2008-03-07
  • 打赏
  • 举报
回复
手机型号是:coolpad268;SDK我用的是v3.1.5.

按您说的试了,还是不行.

我自己测着是执行CAM_STATUS_START 回调给应用程序,并没有再执行CAM_STATUS_FRAME.
另听别人说是不是还另外需要coolpad公司提供相关的库,打电话到coolpad公司,接的人不是一点不懂,要不就是不打电话找具体的人不给你接电话过去. 垃圾公司.

因为刚转到BREW,很多还不太懂.

谢谢楼上的指点
hhygcy 2008-03-07
  • 打赏
  • 举报
回复
首先我必须说的是Camera在每个手机上的表现形式相差很多
我首先要知道你的手机型号 以及SDK 版本

常见的问题可能是
1. MSLEEP(500), 就是在Create Camera Instance 以后到注册回调函数的时候需要等到这么点时间

2. ICAMERA_SetSize 这个就是一般的手机摄像头支持的分辨率就是一下几个

640*480 VGA
320*240 QVGA
160*120 QQVGA
352*288 CIF
176*144 QCIF

你现在的设置值你可以检查一下返回值,如果确实失败可以试试看列出来的这几个

3. 返回值的检查,有的比如ICAMERA_SetSize返回值是不可信的,他会在回调函数中的
随着CAM_CMD_SETPARM附带一个返回值回来。

4. 另外就是一个3.x手机通常的问题就是在start之前需要特殊语句的执行
比如ICAMERA_SetParm(m_pCamera, CAM_PARM_PREVIEW_TYPE, CAM_PREVIEW_SNAPSHOT, 0);

但是就是做完了以上所有的操作还是会得不到Frame,或者是Frame全部是黑色的像素。这种恶心的手机像
LG Env, LG vx9800 都差不多这样

希望我说的可以给你帮助

2,851

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧