Color Space In OpenCV
There are, however, many other color systems each with their own advantages:
- RGB is the most common as our eyes use something similar, our display systems also compose colors using these.
- The HSV and HLS decompose colors into their hue, saturation and value/luminance components, which is a more natural way for us to describe colors. You might, for example, dismiss the last component, making your algorithm less sensible to the light conditions of the input image.
- YCrCb is used by the popular JPEG image format.
- CIE L*a*b* is a perceptually uniform color space, which comes handy if you need to measure the distance of a given color to another color.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// create by using the constructor | |
Mat M(2,2, CV_8UC3, Scalar(0,0,255)); | |
cout << "M = " << endl << " " << M << endl << endl; | |
// create by using the create function() | |
M.create(4,4, CV_8UC(2)); | |
cout << "M = "<< endl << " " << M << endl << endl; | |
// create multidimensional matrices | |
int sz[3] = {2,2,2}; | |
Mat L(3,sz, CV_8UC(1), Scalar::all(0)); | |
// Cannot print via operator << | |
// Create using MATLAB style eye, ones or zero matrix | |
Mat E = Mat::eye(4, 4, CV_64F); | |
cout << "E = " << endl << " " << E << endl << endl; | |
Mat O = Mat::ones(2, 2, CV_32F); | |
cout << "O = " << endl << " " << O << endl << endl; | |
Mat Z = Mat::zeros(3,3, CV_8UC1); | |
cout << "Z = " << endl << " " << Z << endl << endl; | |
// create a 3x3 double-precision identity matrix | |
Mat C = (Mat_<double>(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); | |
cout << "C = " << endl << " " << C << endl << endl; | |
Mat RowClone = C.row(1).clone(); | |
cout << "RowClone = " << endl << " " << RowClone << endl << endl; | |
// Fill a matrix with random values | |
Mat R = Mat(3, 2, CV_8UC3); | |
randu(R, Scalar::all(0), Scalar::all(255)); | |
// Demonstrate the output formating options | |
cout << "R (default) = " << endl << R << endl << endl; | |
cout << "R (python) = " << endl << format(R,"python") << endl << endl; | |
cout << "R (numpy) = " << endl << format(R,"numpy" ) << endl << endl; | |
cout << "R (csv) = " << endl << format(R,"csv" ) << endl << endl; | |
cout << "R (c) = " << endl << format(R,"C" ) << endl << endl; | |
Point2f P(5, 1); | |
cout << "Point (2D) = " << P << endl << endl; | |
Point3f P3f(2, 6, 7); | |
cout << "Point (3D) = " << P3f << endl << endl; | |
vector<float> v; | |
v.push_back( (float)CV_PI); v.push_back(2); v.push_back(3.01f); | |
cout << "Vector of floats via Mat = " << Mat(v) << endl << endl; | |
vector<Point2f> vPoints(20); | |
for (size_t E = 0; E < vPoints.size(); ++E) | |
vPoints[E] = Point2f((float)(E * 5), (float)(E % 7)); | |
cout << "A vector of 2D Points = " << vPoints << endl << endl; |
No comments:
Post a Comment