๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (6) Color Detection ๋ณธ๋ฌธ
๐ฉ๐ป IoT (Embedded)/Image Processing
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (6) Color Detection
์ง์ง์ํ์นด 2023. 6. 12. 16:47728x90
๋ฐ์ํ
<๋ณธ ๋ธ๋ก๊ทธ๋ Murtaza's Workshop ์ ์ ํ๋ธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
=> LEARN OPENCV C++ in 4 HOURS | Including 3x Projects | Computer Vision
๐ Color Detection
๐ง HSV
3๊ฐ์ ์ฑ๋ H(Hue, ์์กฐ), S(Saturation, ์ฑ๋), V(Value, ๋ช ๋) ๊ฐ๋ ์์ ์ด๋ฏธ์ง ํํ๋ฒ
H ๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์ด๋ค ์์์ธ์ง
S๋ ์ด๋ฏธ์ง์ ์์์ด ์ผ๋ง๋ ์์ํ๊ฒ ํฌํจ๋์ด ์๋์ง
V๋ ์์์ด ์ผ๋ง๋ ๋ฐ์์ง ์ด๋์ด์ง๋ฅผ ํํ
#include <opencv2/opencv.hpp> // OpenCV์์ ์ง์ํ๋ ๋ชจ๋ ๊ธฐ๋ฅ
#include <opencv2/videoio.hpp> // ๋น๋์ค ์ถ์ ๋ฐ ๋ฐฐ๊ฒฝ segmentation๊ณผ ๊ด๋ จ๋ ๋ฃจํด
#include <opencv2/imgcodecs.hpp> // ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
์ด ์ ์ธ (Mat ์ด๋ Point๊ฐ ์ ์ธ, ํ๋ ฌ ์ฐ์ฐ ํน์ ๋ฒกํฐ ์ฐ์ฐ)
#include <opencv2/highgui.hpp> // ์๋์ฐ ํ๋ฉด, UI์ฒ๋ฆฌ(์ฌ๋ผ์ด๋, ๋ฒํผ ๋ฑ) ๋ฐ ๋ง์ฐ์ค ์ ์ด ๊ฐ๋ฅ
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
// #6. Color Detection
Mat imgHSV;
void main() {
string path = "Resources/alpaca.jpg";
Mat img = imread(path);
cvtColor(img, imgHSV, COLOR_BGR2HSV);
imshow("Image", img);
imshow("Image HSV", imgHSV);
waitKey(0);
}
๐ง inRange
ํน์ ์์์ ์ถ์ถํ ๋ ์ฌ์ฉ๋๋ inRange๋ฅผ ์ด์ฉํด ์ฐจ์ ์ ์ถ์ถ
inRange(src, lower range, upper range, dst )
src : ์
๋ ฅ ํ๋ ฌ
lowerb : ํํ ๊ฐ ํ๋ ฌ ๋๋ ์ค์นผ๋ผ
upperb : ์ํ ๊ฐ ํ๋ ฌ ๋๋ ์ค์นผ๋ผ
dst : ์
๋ ฅ ์์๊ณผ ๊ฐ์ ํฌ๊ธฐ์ ๋ง์คํฌ ์์
#include <opencv2/opencv.hpp> // OpenCV์์ ์ง์ํ๋ ๋ชจ๋ ๊ธฐ๋ฅ
#include <opencv2/videoio.hpp> // ๋น๋์ค ์ถ์ ๋ฐ ๋ฐฐ๊ฒฝ segmentation๊ณผ ๊ด๋ จ๋ ๋ฃจํด
#include <opencv2/imgcodecs.hpp> // ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
์ด ์ ์ธ (Mat ์ด๋ Point๊ฐ ์ ์ธ, ํ๋ ฌ ์ฐ์ฐ ํน์ ๋ฒกํฐ ์ฐ์ฐ)
#include <opencv2/highgui.hpp> // ์๋์ฐ ํ๋ฉด, UI์ฒ๋ฆฌ(์ฌ๋ผ์ด๋, ๋ฒํผ ๋ฑ) ๋ฐ ๋ง์ฐ์ค ์ ์ด ๊ฐ๋ฅ
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
// #6. Color Detection
Mat imgHSV, mask;
int hmin = 0, smin = 110, vmin = 153;
int hmax = 19, smax = 240, vmax = 255;
void main() {
string path = "Resources/shapes.png";
Mat img = imread(path);
cvtColor(img, imgHSV, COLOR_BGR2HSV);
namedWindow("Trackbars", (640, 200));
createTrackbar("Hue Min", "Trackbars", &hmin, 179);
createTrackbar("Hue Max", "Trackbars", &hmax, 179);
createTrackbar("Sat Min", "Trackbars", &smin, 255);
createTrackbar("Sat Max", "Trackbars", &smax, 255);
createTrackbar("Val Min", "Trackbars", &vmin, 255);
createTrackbar("Val Max", "Trackbars", &vmax, 255);
while (true) {
Scalar lower(hmin, smin, vmin);
Scalar upper(hmax, smax, vmax);
// inRange(src, lower range, upper range, dst)
// : ํน์ ์์์ ์ถ์ถํ ๋ ์ฌ์ฉ๋๋ inRange๋ฅผ ์ด์ฉํด ์ฐจ์ ์ ์ถ์ถ
inRange(imgHSV, lower, upper, mask);
imshow("Image", img);
imshow("Image HSV", imgHSV);
imshow("Image Mask", mask);
waitKey(1);
}
}
728x90
๋ฐ์ํ
'๐ฉโ๐ป IoT (Embedded) > Image Processing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (8) Face Detection (0) | 2023.06.13 |
---|---|
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (7) Shapes/Contour Detection (0) | 2023.06.12 |
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (5) Wrap Perspective (0) | 2023.06.12 |
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (4) Drawing shapes and text (0) | 2023.06.12 |
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (3) Resize and Crop (0) | 2023.06.12 |
Comments