From 403cf4b5e7c1a8fc5e8eebe6ce6d1cc10bef77c0 Mon Sep 17 00:00:00 2001 From: Labhesh Valechha Date: Tue, 16 Mar 2021 21:52:40 +0530 Subject: [PATCH 1/2] Adding sample code --- .../CMakeLists.txt | 15 +++++++++ .../README.md | 30 ++++++++++++++++++ .../boy.jpg | Bin 0 -> 41582 bytes .../sampleCode.cpp | 26 +++++++++++++++ .../sampleCode.py | 18 +++++++++++ README.md | 2 +- 6 files changed, 90 insertions(+), 1 deletion(-) create mode 100755 Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt create mode 100755 Install-OpenCV-4-on-Ubuntu-from-source/README.md create mode 100644 Install-OpenCV-4-on-Ubuntu-from-source/boy.jpg create mode 100755 Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.cpp create mode 100755 Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py diff --git a/Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt b/Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt new file mode 100755 index 000000000..8ae133cb5 --- /dev/null +++ b/Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 2.8.12) + +PROJECT(Project) + +#SET(OpenCV_DIR /path/to/opencv/folder) +find_package(OpenCV REQUIRED) + +include_directories(${OpenCV_INCLUDE_DIRS}) + +MACRO(add_example name) + ADD_EXECUTABLE(${name} ${name}.cpp) + TARGET_LINK_LIBRARIES(${name} ${OpenCV_LIBS}) +ENDMACRO() + +add_example(sampleCode) diff --git a/Install-OpenCV-4-on-Ubuntu-from-source/README.md b/Install-OpenCV-4-on-Ubuntu-from-source/README.md new file mode 100755 index 000000000..5bb16901f --- /dev/null +++ b/Install-OpenCV-4-on-Ubuntu-from-source/README.md @@ -0,0 +1,30 @@ +# Code for Install OpenCV 4 on Ubuntu from source + +This repository contains the sample code for [Install OpenCV 4 on Ubuntu from source](https://learnopencv.com/install-opencv-4-on-ubuntu-18-04/) + +## Run Code: + +### C++ +``` +mkdir build +cd build +cmake .. +cmake --build . --config Release +cd .. +./build/sampleCode +``` + +### Python +``` +python sampleCode.py +``` + +# AI Courses by OpenCV + +Want to become an expert in AI? [AI Courses by OpenCV](https://opencv.org/courses/) is a great place to start. + + +

+ +

+
diff --git a/Install-OpenCV-4-on-Ubuntu-from-source/boy.jpg b/Install-OpenCV-4-on-Ubuntu-from-source/boy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67ef6802cc99d60ddee1cb291a765e619f5c3b0b GIT binary patch literal 41582 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 SML- +#include + +using namespace std; +using namespace cv; + +int main(int argc, char **argv) +{ + // Print OpenCV Version + cout << CV_VERSION << endl; + + // Read image + Mat image = imread("boy.jpg", 1); + + // Convert image to grayscale + cvtColor(image, image, COLOR_BGR2GRAY); + + // Display image + imshow("Display", image); + waitKey(0); + + // Save grayscale image + imwrite("boyGray.jpg",image); + + return 0; +} diff --git a/Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py b/Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py new file mode 100755 index 000000000..4a4f4f9e3 --- /dev/null +++ b/Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py @@ -0,0 +1,18 @@ +import cv2 as cv +import numpy as np + +# Print OpenCV Version +print(cv.__version__) + +# Read image +image = cv.imread("boy.jpg", 1) + +# Convert image to grayscale +image = cv.cvtColor(image, cv.COLOR_BGR2GRAY) + +# Display image +cv.imshow("Display", image) +cv.waitKey(0) + +# Save grayscale image +cv.imwrite("boyGray.jpg",image) diff --git a/README.md b/README.md index 7c33dc275..8033066e8 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ Want to become an expert in AI? [AI Courses by OpenCV](https://opencv.org/course |[Install OpenCV 4 on Windows (C++ and Python)](https://www.learnopencv.com/install-opencv-4-on-windows/) | [Code](https://github.com/spmallick/learnopencv/tree/master/InstallScripts/Windows-4) | |[Hand Keypoint Detection using Deep Learning and OpenCV](https://www.learnopencv.com/hand-keypoint-detection-using-deep-learning-and-opencv/) | [Code](https://github.com/spmallick/learnopencv/tree/master/HandPose)| |[Deep learning based Object Detection and Instance Segmentation using Mask R-CNN in OpenCV (Python / C++)](https://www.learnopencv.com/deep-learning-based-object-detection-and-instance-segmentation-using-mask-r-cnn-in-opencv-python-c/) | [Code](https://github.com/spmallick/learnopencv/tree/master/Mask-RCNN) | -|[Install OpenCV 4 on Ubuntu 18.04 (C++ and Python)](https://www.learnopencv.com/install-opencv-4-on-ubuntu-18-04/) | [Code](https://github.com/spmallick/learnopencv/blob/master/InstallScripts/installOpenCV-4-on-Ubuntu-18-04.sh) | +|[Install OpenCV 4 on Ubuntu (C++ and Python)](https://www.learnopencv.com/install-opencv-4-on-ubuntu-18-04/) | [Code](https://github.com/spmallick/learnopencv/blob/master/Install-OpenCV-4-on-Ubuntu-from-source) | |[Install OpenCV 4 on Ubuntu 16.04 (C++ and Python)](https://www.learnopencv.com/install-opencv-4-on-ubuntu-16-04/) | [Code](https://github.com/spmallick/learnopencv/blob/master/InstallScripts/installOpenCV-4-on-Ubuntu-16-04.sh) | |[Multi-Person Pose Estimation in OpenCV using OpenPose](https://www.learnopencv.com/multi-person-pose-estimation-in-opencv-using-openpose/) | [Code](https://github.com/spmallick/learnopencv/tree/master/OpenPose-Multi-Person) | |[Heatmap for Logo Detection using OpenCV (Python)](https://www.learnopencv.com/heatmap-for-logo-detection-using-opencv-python/) | [Code](https://github.com/spmallick/learnopencv/tree/master/heatmap)| From 0990d65d3102435ca686fd36f99d4c20f416a6f7 Mon Sep 17 00:00:00 2001 From: Labhesh Valechha Date: Wed, 17 Mar 2021 17:56:07 +0530 Subject: [PATCH 2/2] removing redundant code --- Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt | 2 +- Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt b/Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt index 8ae133cb5..12b17d7fa 100755 --- a/Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt +++ b/Install-OpenCV-4-on-Ubuntu-from-source/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.12) PROJECT(Project) -#SET(OpenCV_DIR /path/to/opencv/folder) +SET(OpenCV_DIR /path/to/opencv/config) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) diff --git a/Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py b/Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py index 4a4f4f9e3..75b81216e 100755 --- a/Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py +++ b/Install-OpenCV-4-on-Ubuntu-from-source/sampleCode.py @@ -1,5 +1,4 @@ import cv2 as cv -import numpy as np # Print OpenCV Version print(cv.__version__)