forked from PhotonVision/photon-libcamera-gl-driver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
77 lines (62 loc) · 2.87 KB
/
main.cpp
File metadata and controls
77 lines (62 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "camera_runner.h"
#include "libcamera_jni.hpp"
#include <chrono>
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
enum class ProcessType_: int32_t {
None = 0,
Hsv,
Gray,
Adaptive,
};
void test_res(int width, int height) {
int rotation = 180;
Java_org_photonvision_raspi_LibCameraJNI_createCamera(nullptr, nullptr,
width, height, rotation);
// Java_org_photonvision_raspi_LibCameraJNI_setGpuProcessType(nullptr, nullptr, 1);
Java_org_photonvision_raspi_LibCameraJNI_setGpuProcessType(nullptr, nullptr, (jint)ProcessType_::Hsv);
Java_org_photonvision_raspi_LibCameraJNI_setFramesToCopy(nullptr, nullptr, true, true);
Java_org_photonvision_raspi_LibCameraJNI_startCamera(nullptr, nullptr);
Java_org_photonvision_raspi_LibCameraJNI_setExposure(nullptr, nullptr, 80 * 800);
Java_org_photonvision_raspi_LibCameraJNI_setBrightness(nullptr, nullptr, 0.0);
Java_org_photonvision_raspi_LibCameraJNI_setAnalogGain(nullptr, nullptr, 20);
Java_org_photonvision_raspi_LibCameraJNI_setAutoExposure(nullptr, nullptr, true);
auto start = std::chrono::steady_clock::now();
while (std::chrono::steady_clock::now() - start < std::chrono::seconds(3)) {
bool ready = Java_org_photonvision_raspi_LibCameraJNI_awaitNewFrame(nullptr, nullptr);
if (ready) {
static int i = 0;
cv::Mat color_mat = *(cv::Mat*)Java_org_photonvision_raspi_LibCameraJNI_takeColorFrame(nullptr, nullptr);
cv::Mat threshold_mat = *(cv::Mat*)Java_org_photonvision_raspi_LibCameraJNI_takeProcessedFrame(nullptr, nullptr);
uint64_t captureTime = Java_org_photonvision_raspi_LibCameraJNI_getFrameCaptureTime(nullptr, nullptr);
uint64_t now = Java_org_photonvision_raspi_LibCameraJNI_getLibcameraTimestamp(nullptr, nullptr);
printf("now %lu capture %lu latency %f\n", now, captureTime, (double)(now - captureTime) / 1000000.0);
i++;
static char arr[50];
snprintf(arr,sizeof(arr),"color_%i.png", i);
cv::imwrite(arr, color_mat);
snprintf(arr,sizeof(arr),"thresh_%i.png", i);
cv::imwrite(arr, threshold_mat);
}
}
Java_org_photonvision_raspi_LibCameraJNI_stopCamera(nullptr, nullptr);
Java_org_photonvision_raspi_LibCameraJNI_destroyCamera(nullptr, nullptr);
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
}
int main() {
// test_res(1920, 1080);
test_res(320, 240);
// test_res(640, 480);
// test_res(960, 720);
// // test_res(2592, 1944);
// test_res(2592/2, 1944/2);
// test_res(1920, 1080);
// test_res(320, 240);
// test_res(640, 480);
// test_res(960, 720);
// // test_res(2592, 1944);
// test_res(2592/2, 1944/2);
std::cout << "Done" << std::endl;
return 0;
}