İmzası şöyle
GRAY ile kaynak resim 1 kanallıdır
BGR ile kaynak resim 3 kanallıdır
BGRA ile kaynak resim 4 kanallıdır
Kaynak resmin renklerini değiştirmeden önce doğru kanal sayısına sahip olduğundan emin olmak gerekir.
void cvtColor (InputArray sr, OutputArray dst, int code )
Resmin renklerini değiştirir. OpenCV resimleri BGR formatında yükler.GRAY ile kaynak resim 1 kanallıdır
BGR ile kaynak resim 3 kanallıdır
BGRA ile kaynak resim 4 kanallıdır
Kaynak resmin renklerini değiştirmeden önce doğru kanal sayısına sahip olduğundan emin olmak gerekir.
Örnek
Resmin renk uzayını değiştirmekteki bir amaç contour 'ları bulmak olabilir. Şöyle yaparız
cv::Mat input = cv::imread("../inputData/RotatedRect.png");
// convert to grayscale (you could load as grayscale instead)
cv::Mat gray;
cv::cvtColor(input,gray, CV_BGR2GRAY);
// compute mask (you could use a simple threshold if the image is always as good as
// the one you provided)
cv::Mat mask;
cv::threshold(gray, mask, 0, 255, CV_THRESH_BINARY_INV | CV_THRESH_OTSU);
// find contours (if always so easy to segment as your image, you could just
// add the black/rect pixels to a vector)
std::vector<std::vector<cv::Point>> contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours(mask,contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
Örnek - 4 kanalŞöyle yaparız.
Mat srcColor = ...
Mat dstGray;
cvtColor(srcColor, dstGray, CV_BGRA2GRAY);
ÖrnekDaha genel bir çözüm için şöyle yaparız.
const cv::Mat img = ...;
//Convert the input image to the input image format
cv::Mat sample;
if (img.channels() == 3 && num_channels_ == 1)
cv::cvtColor(img, sample, cv::COLOR_BGR2GRAY);
else if (img.channels() == 4 && num_channels_ == 1)
cv::cvtColor(img, sample, cv::COLOR_BGRA2GRAY);
else if (img.channels() == 4 && num_channels_ == 3)
cv::cvtColor(img, sample, cv::COLOR_BGRA2BGR);
else if (img.channels() == 1 && num_channels_ == 3)
cv::cvtColor(img, sample, cv::COLOR_GRAY2BGR);
else
sample = img;
ÖrnekEğer aynı resmi değiştirmek istersek şöyle yaparız. Yeni OpenCV sürümüğnde CV_ile başlayan sabitler COLOR_ ile başlayan sabitlerle yer değiştirdi.
cvtColor (image, image,
COLOR_BGR2GRAY);
ÖrnekOpenCV tarafından yüklenmeyen bir resmi siyah beyaz yapmak için şöyle yaparız.
Mat srcColor = ...;
Mat srcGray;
cvtColor(srcColor,srcGray, CV_RGB2GRAY);
ÖrnekDiğer renk uzayları arasında dönüşüm yapmak için şöyle yaparız
cvtColor(img, dstimg, cv::COLOR_YUV2BGR);
cvtColor(img, dstimg, cv::COLOR_BGR2RGB);
cvtColor(img, dstimg
, CV_BGR2HSV);
Hiç yorum yok:
Yorum Gönder