Created
March 8, 2013 12:23
-
-
Save liewsi/5116120 to your computer and use it in GitHub Desktop.
Erguvan Yeniden!
This file contains 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
#include <opencv2/core/core.hpp> | |
#include <opencv2/imgproc/imgproc.hpp> | |
#include <opencv2/highgui/highgui.hpp> | |
void erguvan(cv::Mat& resim) { | |
// Renk uzayını HSV'ye dönüştürelim. | |
cv::cvtColor(resim, resim, CV_BGR2HSV); | |
// Renkli resmi kanallara ayıralım: Hue (renk tonu), | |
// Saturation (doygunluk), Value (aydınlık). | |
std::vector kanallar; | |
cv::split(resim, kanallar); | |
// Maskeyi oluşturalım | |
// Renk tonu (ilk kanal) 0-180 derecelik bir açı içinde olacak. 0-360 derece | |
// arasında düşünürken 300-340 arası erguvan rengiydi, dolayısıyla burada tam | |
// yarısı olacak. Resimler için aşırıyüklü (overloaded) mantıksal işlemleri | |
// kullanarak tek satırda bu işi halledebildik. | |
cv::Mat maske = (kanallar[0] < 150) | (kanallar[0] > 170); | |
// Maske, erguvan dışında renge sahip olan pikseller için doğru (true), | |
// diğerleri için yanlış (false) oldu. Maskenin doğru olduğu yerlerin | |
// doygunluğunu 0'a çektik, yani bu pikselleri siyah-beyaz yaptık. | |
kanallar[1].setTo(cv::Scalar(0), maske); | |
// Kanalları geri birleştirelim ve resmi özgün uzayına geri çevirelim. | |
cv::merge(kanallar,resim); | |
cv::cvtColor(resim, resim, CV_HSV2BGR); | |
} | |
void main() { | |
// Resmi okuyalım. | |
cv::Mat resim = cv::imread("erguvan.jpg"); | |
// Ekrana çizdirelim. | |
cv::namedWindow("Resim"); | |
cv::imshow("Resim", resim); | |
// Erguvan dışındaki renkleri söndürelim. | |
erguvan(resim); | |
// Güncel resmi ekrana çizelim. | |
cv::namedWindow("Resim 2"); | |
cv::imshow("Resim 2", resim); | |
// Sonucu kaydedelim. | |
cv::imwrite("erguvan2.jpg", resim); | |
cv::waitKey(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment