Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "Ubuntu 22.04 OpenCV - Dev Container",
"image": "ubuntu-jammy-opencv-dev",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.shell.linux": "bash"
},
"extensions": [
"ms-vscode.cmake-tools",
"ms-vscode.cpptools"
]
}
},
"postStartCommand": "bash",
"remoteUser": "user",
"runArgs": [
"-e", "DISPLAY=host.docker.internal:0.0",
"--rm",
"--name", "ubuntu-jammy-opencv-dev"
]
}
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
**.DS_Store
**.vscode
**.vscode
build/
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "third-party/opencv4.10"]
path = third-party/opencv4.10
url = https://github.com/opencv/opencv.git
17 changes: 17 additions & 0 deletions 01-playground/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# 01-playground/CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(MyApp)

# Set C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

# Add your app
add_executable(MyApp src/main.cpp)

# Link against OpenCV shared libraries built in Release
target_link_libraries(MyApp ${OpenCV_LIBS})
14 changes: 14 additions & 0 deletions 01-playground/src/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// 01-playground/src/main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
std::cout << "OpenCV Version: " << CV_VERSION << std::endl;

cv::Mat image = cv::Mat::zeros(300, 300, CV_8UC3);
cv::putText(image, "Hello, OpenCV!", cv::Point(50, 150), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(0, 255, 0), 2);

cv::imshow("OpenCV Window", image);
cv::waitKey(0);
return 0;
}
33 changes: 33 additions & 0 deletions 02-opencv-library/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# 02-opencv-library/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

project(sfnd-camera LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS "${CXX_FLAGS}")

if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})

# Add binaries for source files
add_executable(create_matrix src/create_matrix.cpp)
target_link_libraries(create_matrix PRIVATE ${OpenCV_LIBS})

add_executable(change_pixels src/change_pixels.cpp)
target_link_libraries(change_pixels PRIVATE ${OpenCV_LIBS})

add_executable(load_image_1 src/load_image_1.cpp)
target_link_libraries(load_image_1 PRIVATE ${OpenCV_LIBS})

add_executable(load_image_2 src/load_image_2.cpp)
target_link_libraries(load_image_2 PRIVATE ${OpenCV_LIBS})

add_executable(load_image_3 src/load_image_3.cpp)
target_link_libraries(load_image_3 PRIVATE ${OpenCV_LIBS})
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ void changePixels()
for (int r = 230; r < 250; r++)
{
// STUDENT TASK : loop over all columns and set matrix elements to 255

for (int col = 0; col < m1_8u.cols; col++)
{
m1_8u.at<unsigned char>(r, col) = 255;
}

}

// show result
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,25 @@ void createMatrix1()
m1_8u.create(nrows, ncols, CV_8UC1); // two-channel matrix with 8bit unsigned elements
m1_8u.setTo(cv::Scalar(255)); // white

// STUDENT TASK :
// STUDENT TASK:
// Create a variable of type cv::Mat* named m3_8u which has three channels with a
// depth of 8bit per channel. Then, set the first channel to 255 and display the result.

cv::Mat m3_u8;
m3_u8.create(nrows, ncols, CV_8UC3); // three-channel matrix with 8bit unsigned elements
m3_u8.setTo(cv::Scalar(255, 0, 0)); // blue

// show result
string windowName = "First steps in OpenCV (m1_8u)";
cv::namedWindow(windowName, 1); // create window
cv::imshow(windowName, m1_8u);
cv::waitKey(0); // wait for keyboard input before continuing

// STUDENT TASK :
// STUDENT TASK:
// Display the results from the STUDENT TASK above

windowName = "First steps in OpenCV (m3_8u)";
cv::namedWindow(windowName, 1); // create window
cv::imshow(windowName, m3_u8);
cv::waitKey(0); // wait for keyboard input before continuing
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
#include <iomanip>
#include <iostream>
#include <string>
#include <filesystem>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>

using namespace std;

void loadImage1()
{
// current_path() returns a std::filesystem::path
std::filesystem::path cwd = std::filesystem::current_path();

std::cout << "Current working directory: " << cwd << std::endl;

// load image from file
cv::Mat img;
img = cv::imread("../images/img1.png");
// This is if you run from the root dir like so:
// ./build/02-opencv-library/Debug/load_image_1.exe
img = cv::imread("02-opencv-library/images/img1.png");

// show result
string windowName = "First steps in OpenCV";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ void loadImage2()
// create file name
ostringstream imgNumber; // #include <sstream>
imgNumber << setfill('0') << setw(4) << i; // #include <iomanip>
string filename = "../images/img" + imgNumber.str() + ".png";
string filename = "02-opencv-library/images/img" + imgNumber.str() + ".png";

// load and display image
cv::Mat img;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ void loadImage3()
// create file name
ostringstream imgNumber; // #include <sstream>
imgNumber << setfill('0') << setw(4) << i; // #include <iomanip>
string filename = "../images/img" + imgNumber.str() + ".jpg";
string filename = "02-opencv-library/images/img" + imgNumber.str() + ".jpg";

// load image and store it into a vector
cv::Mat img;
Expand All @@ -29,8 +29,11 @@ void loadImage3()
cv::namedWindow(windowName, 1); // create window
for (auto it = imgList.begin(); it != imgList.end(); ++it)
{

// STUDENT TASK : Prevent image 7 from being displayed
if (it == imgList.begin() + 2)
{
continue;
}

// display image
cv::imshow(windowName, *it);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
# 03-collision-detection-system/ttc-camera/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

add_definitions(-std=c++11)
project(sfnd-camera LANGUAGES CXX)

set(CXX_FLAGS "-Wall" "-pedantic")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(camera_fusion)
set(CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")

find_package(OpenCV 4.1 REQUIRED)
if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
# 03-collision-detection-system/ttc-lidar/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

add_definitions(-std=c++11)
project(sfnd-camera LANGUAGES CXX)

set(CXX_FLAGS "-Wall" "-pedantic")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(camera_fusion)
set(CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")

find_package(OpenCV 4.1 REQUIRED)
if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})
Expand Down
23 changes: 23 additions & 0 deletions 04-tracking-image-features/cornerness_harris/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 04-tracking-image-features/cornerness_harris/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

project(sfnd-camera LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")

if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})

# Executables for exercise
add_executable (cornerness_harris src/cornerness_harris.cpp)
target_link_libraries (cornerness_harris ${OpenCV_LIBRARIES})
23 changes: 23 additions & 0 deletions 04-tracking-image-features/describe-keypoints/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 04-tracking-image-features/describe-keypoints/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

project(sfnd-camera LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")

if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})

# Executables for exercise
add_executable (describe_keypoints src/describe_keypoints.cpp)
target_link_libraries (describe_keypoints ${OpenCV_LIBRARIES})
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
# 04-tracking-image-features/descriptor-matching/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

add_definitions(-std=c++11)
project(sfnd-camera LANGUAGES CXX)

set(CXX_FLAGS "-Wall" "-pedantic")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(camera_fusion)
set(CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")

find_package(OpenCV 4.1 REQUIRED)
if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})
Expand Down
23 changes: 23 additions & 0 deletions 04-tracking-image-features/detect_keypoints/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 04-tracking-image-features/detect-keypoints/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

project(sfnd-camera LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")

if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})

# Executables for exercise
add_executable (detect_keypoints src/detect_keypoints.cpp)
target_link_libraries (detect_keypoints ${OpenCV_LIBRARIES})
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
# 04-tracking-image-features/gradient-filtering/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

add_definitions(-std=c++11)
project(sfnd-camera LANGUAGES CXX)

set(CXX_FLAGS "-Wall" "-pedantic")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS, "${CXX_FLAGS}")

project(camera_fusion)
if(NOT OpenCV_FOUND)
find_package(OpenCV REQUIRED)
endif()

find_package(OpenCV 4.1 REQUIRED)

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ void magnitudeSobel()
// show result
string windowName = "Gaussian Blurring";
cv::namedWindow(windowName, 1); // create window
cv::imshow(windowName, magnitude);
// cv::imshow(windowName, magnitude);
cv::waitKey(0); // wait for keyboard input before continuing
}

Expand Down
Loading
Loading