İ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