मैंने इस दिन पर काम किया है। मेरे पास एक ओपनसीवी/जावाकैमेरा व्यू-आधारित प्रोजेक्ट है जो मैं एंड्रॉइड android.hardware.camera2.CaptureRequest
ऑब्जेक्ट के साथ एकीकृत करने की कोशिश कर रहा हूं जिसका उपयोग मैं कैमरे की संवेदनशीलता को प्रकाश में नियंत्रित करने के लिए करता हूं।क्या एंड्रॉइड.hardware.camera2.CaptureRequest OpenCV के साथ उपयोग किया जा सकता है?
CameraBridgeViewBase.CvCameraViewListener2/JavaCameraView
प्रोजेक्ट काम करता है (मैं स्क्रीन पर एक छवि देख सकता हूं), और CaptureRequest
प्रोजेक्ट काम करता है (इसे भी देखें), लेकिन एक ही परियोजना में दो तकनीकों के संयोजन से एक बड़ी समस्या साबित हुई है।
क्या किसी ने भी इन दोनों तकनीकों को एक साथ काम करने के लिए प्राप्त किया है? मेरा लक्ष्य है कि कैमरे को कैप्चररवेस्ट (सीमित SENSOR_SENSITIVITY + SENSOR_EXPOSURE_TIME) के नियंत्रण में रखना है, लेकिन स्क्रीन के लिए एक ओपनसीवी साझा लाइब्रेरी के माध्यम से फ़िल्टर की गई स्ट्रीमिंग छवि दिखाने के लिए मैंने लिखा है।
कैमरे को नियंत्रित करने के लिए, मैं कुछ इस तरह उपयोग कर सकते हैं: पहले से
public class MyCoolScanner extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 {
...
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
OpenCVNative.myCoolLibrary(mRgba.getNativeObjAddr(),mGray.getNativeObjAddr());
return mGray;
}
धन्यवाद:
mCameraDevice.createCaptureSession(Arrays.asList(surface, mImageReader.getSurface()),
new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
// The camera is already closed
if (null == mCameraDevice) {
return;
}
long exposureTime = 66259688,frameDuration = 1000;
int sensitivity = 1512;
mCaptureSession = cameraCaptureSession;
try {
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
setAutoFlash(mPreviewRequestBuilder);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
mPreviewRequestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, Long.valueOf(exposureTime));
mPreviewRequestBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, Integer.valueOf(sensitivity));
mPreviewRequestBuilder.set(CaptureRequest.SENSOR_FRAME_DURATION, Long.valueOf(frameDuration));
mPreviewRequest = mPreviewRequestBuilder.build();
mCaptureSession.setRepeatingRequest(mPreviewRequest,
mCaptureCallback, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
छवि धारा फ़िल्टर करने के लिए, मैं कुछ इस तरह उपयोग कर सकते हैं।
मैं अगले कुछ दिनों से बंद हो जाऊंगा, लेकिन इस प्रश्न के जवाबों की जांच जारी रखेगा। – Brian