我正在开发一个Android应用程序,它使用前置摄像头为用户模拟镜像.我需要应用程序每隔5秒拍一张照片作为位图(自动且无需用户交互),然后我将其与另一个位图结合使用.
对我来说困难的部分:如何拍照并将其作为位图?
我尝试了几种解决方案,但还没有一种解决方案.
标记为重复的另一个问题是手动而非自动执行此操作.
我正在进行一些图像处理,我需要原始图像数据.但不幸的是,根据文档,这是可选的,取决于供应商.
我已经能够在LG Optimus Maha(mac/lu3000)android开发中获得原始图像,是否有支持它的市场中有任何其他设备?
不支持它的设备(来源 - 我的实验+谷歌问题10910:无法捕获原始图像) -
如果有人有不同的设备并且可以尝试它会很棒..
有关此处不支持回拨的原因的详细信息
我正在尝试将android pictureCallback解码为灰度垫:
首先我尝试使用rawPicture回调但总是得到空指针.
mCamera.takePicture(null, mPicture, null);
Run Code Online (Sandbox Code Playgroud)
JpegCalback给我不是null byte []数组,但cvtColor转换不起作用.
mCamera.takePicture(null, null, mPicture);
Run Code Online (Sandbox Code Playgroud)
我的预览回调就是这个
Camera.PictureCallback mPicture = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Toast.makeText(getApplicationContext(),"picture taken",Toast.LENGTH_SHORT);
int res=JniManager.setImage(data,m_width,m_height);
mCamera.stopPreview();
mCamera.startPreview();
}
};
Run Code Online (Sandbox Code Playgroud)
c ++ JNI函数:
Java_pidaas_vicomtech_org_facerec_viulib_JniManager_setImage(JNIEnv *env,
jobject instance,
jbyteArray image,
jint width,
jint height)
jbyte* _yuv = env->GetByteArrayElements(image, 0);
int len = env->GetArrayLength (image);
unsigned char* buf = new unsigned char[len];
env->GetByteArrayRegion (image, 0, len, reinterpret_cast<jbyte*>(buf));
Mat rawData (cv::Size(width,height), CV_8UC3, buf );
cv::Mat test =imdecode(rawData,CV_LOAD_IMAGE_COLOR);
cv::Mat …Run Code Online (Sandbox Code Playgroud)