Skip to content

Commit 9f12057

Browse files
Merge branch 'Iainmon:main' into main
2 parents c0d8bce + 0a2984e commit 9f12057

211 files changed

Lines changed: 4263 additions & 14 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

bridge/include/bridge.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ bridge_tensor_t resize(bridge_tensor_t input,int height,int width);
4040
bridge_tensor_t imagenet_normalize(bridge_tensor_t input);
4141

4242

43+
bridge_tensor_t add_two_arrays(bridge_tensor_t a, bridge_tensor_t b);
44+
4345
// bridge_tensor_t capture_webcam_bridge(int cam_index);
4446

4547
int baz(void);
@@ -102,6 +104,11 @@ proto_bridge_simple(softsign);
102104

103105
proto_bridge_simple(tanhshrink);
104106

107+
void split_loop(int64_t idx, int64_t n);
108+
void split_loop_filler(int64_t n,int64_t* ret);
109+
110+
void show_webcam(void);
111+
105112

106113
// bridge_tensor_t conv2d(
107114
// bridge_tensor_t input,

bridge/include/bridge.h.pch

1.13 MB
Binary file not shown.

bridge/lib/bridge.cpp

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313
#include <cstdlib>
1414
#include <vector>
1515
#include <cstdint>
16+
#include <chrono>
17+
#include <thread>
18+
19+
#include <opencv2/opencv.hpp>
20+
1621

1722
#define def_bridge_simple(Name) \
1823
extern "C" bridge_tensor_t Name(bridge_tensor_t input) { \
@@ -264,6 +269,16 @@ extern "C" bridge_tensor_t imagenet_normalize(bridge_tensor_t input) {
264269
return torch_to_bridge(output);
265270
}
266271

272+
273+
extern "C" bridge_tensor_t add_two_arrays(bridge_tensor_t a, bridge_tensor_t b) {
274+
torch::Tensor t_a = bridge_to_torch(a);
275+
torch::Tensor t_b = bridge_to_torch(b);
276+
277+
torch::Tensor output = t_a + t_b;
278+
279+
return torch_to_bridge(output);
280+
}
281+
267282
// extern "C" bridge_tensor_t capture_webcam_bridge(int cam_index) {
268283
// torch::Tensor image = capture_webcam(cam_index);
269284
// return torch_to_bridge(image);
@@ -371,3 +386,55 @@ extern "C" float sumArray(float* arr, int* sizes, int dim) {
371386
// auto t = torch::from_blob(arr, shape, torch::kFloat);
372387
// return t.sum().item<float>();
373388
}
389+
390+
391+
extern "C" void split_loop(int64_t idx, int64_t n) {
392+
for (int i = 0; i < n; ++i) {
393+
std::cout << "idx(" << idx << "," << n << ") = " << i << std::endl;
394+
std::cout.flush();
395+
}
396+
}
397+
398+
extern "C" void split_loop_filler(int64_t n,int64_t* ret) {
399+
for (int i = 0; i < n; ++i) {
400+
*ret = i;
401+
std::this_thread::sleep_for(std::chrono::seconds(0));
402+
}
403+
}
404+
405+
406+
407+
cv::VideoCapture open_camera(int cam_index) {
408+
cv::VideoCapture cap(cam_index, cv::CAP_AVFOUNDATION);
409+
if (!cap.isOpened()) {
410+
std::cerr << "Could not open camera index " << cam_index << std::endl;
411+
return cv::VideoCapture();
412+
}
413+
cap.set(cv::CAP_PROP_BUFFERSIZE, 1); // minimal internal buffering
414+
cap.set(cv::CAP_PROP_FPS, 60); // request higher FPS if possible
415+
return cap;
416+
}
417+
418+
419+
extern "C" void show_webcam(void) {
420+
cv::VideoCapture cap;
421+
cap = open_camera(0);
422+
423+
cv::Mat frame_bgr;
424+
425+
while (true) {
426+
if (!cap.read(frame_bgr) || frame_bgr.empty()) {
427+
std::cerr << "[WARN] Empty frame, exiting" << std::endl;
428+
break;
429+
}
430+
431+
cv::imshow("webcam", frame_bgr);
432+
433+
if (cv::waitKey(1) == 27) { // ESC key
434+
break;
435+
}
436+
}
437+
438+
cap.release();
439+
cv::destroyAllWindows();
440+
}

demos/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# add_subdirectory(video)
1+
add_subdirectory(video)
22

33
# add_subdirectory(webcam_filter)
44

demos/video/CMakeLists.txt

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,19 @@ find_library(METAL Metal REQUIRED)
99
find_library(FOUNDATION Foundation REQUIRED)
1010

1111

12+
1213
add_executable(VidStreamer
13-
${CMAKE_CURRENT_SOURCE_DIR}/webcam_infer.cpp
14-
# ${CMAKE_CURRENT_SOURCE_DIR}/cvutil.hpp
15-
${CMAKE_CURRENT_SOURCE_DIR}/imageops.hpp
14+
${CMAKE_CURRENT_SOURCE_DIR}/webcam-capture/webcam_infer.cpp
1615
)
1716

1817
target_include_directories(VidStreamer
1918
PRIVATE
19+
${CMAKE_CURRENT_SOURCE_DIR}/include
2020
${LIBTORCH_DIR}/include
2121
${LIBTORCH_DIR}/include/torch/csrc/api/include
2222
)
2323

24-
target_link_directories(VidStreamer
25-
PRIVATE
26-
${LIBTORCH_DIR}/lib
27-
)
24+
target_link_directories(VidStreamer PRIVATE ${LIBTORCH_DIR}/lib)
2825

2926
target_link_libraries(VidStreamer
3027
PRIVATE
@@ -37,17 +34,64 @@ target_link_libraries(VidStreamer
3734
${ACCELERATE}
3835
${METAL}
3936
${FOUNDATION}
40-
BridgeUtil
4137
)
4238

4339
set_target_properties(VidStreamer PROPERTIES
4440
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
4541
)
4642

47-
4843
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
4944
target_compile_options(VidStreamer PRIVATE -Ofast -flto -ffast-math)
5045
target_link_options(VidStreamer PRIVATE -flto)
5146
endif()
5247

5348

49+
50+
51+
52+
53+
54+
add_executable(StyleTransfer
55+
${CMAKE_CURRENT_SOURCE_DIR}/style-transfer/style_transfer.cpp
56+
)
57+
58+
target_include_directories(StyleTransfer
59+
PRIVATE
60+
${CMAKE_CURRENT_SOURCE_DIR}/include
61+
${LIBTORCH_DIR}/include
62+
${LIBTORCH_DIR}/include/torch/csrc/api/include
63+
)
64+
65+
target_link_directories(StyleTransfer PRIVATE ${LIBTORCH_DIR}/lib)
66+
67+
target_link_libraries(StyleTransfer
68+
PRIVATE
69+
-ltorch
70+
-ltorch_cpu
71+
-lc10
72+
-ltorch_global_deps
73+
${OpenCV_LIBS}
74+
# ${TORCH_LIBRARIES}
75+
${ACCELERATE}
76+
${METAL}
77+
${FOUNDATION}
78+
)
79+
80+
set_target_properties(StyleTransfer PROPERTIES
81+
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
82+
)
83+
84+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
85+
target_compile_options(StyleTransfer PRIVATE -Ofast -flto -ffast-math)
86+
target_link_options(StyleTransfer PRIVATE -flto)
87+
endif()
88+
89+
90+
add_custom_command(
91+
TARGET StyleTransfer
92+
POST_BUILD
93+
COMMAND ${CMAKE_COMMAND} -E copy_directory
94+
"${CMAKE_CURRENT_SOURCE_DIR}/style-transfer/models"
95+
"$<TARGET_FILE_DIR:StyleTransfer>/style-transfer/models"
96+
COMMENT "NOT! Copying ${PROJECT_ROOT_DIR}/examples/vgg/images to $<TARGET_FILE_DIR:vgg>/images"
97+
)

0 commit comments

Comments
 (0)