CliCam 20/8/2025
Yazılımcıların kullandığı araçların hemen hemen hepsinin hem komut satırı hem de grafik arayüzü bulunur. Peki neden kameralarımızın bir komut satırı arayüzü olmasın?
Bu fikir aklıma ilk geldiğinde her ne kadar verimsiz bir uygulama olacaksa da merakımı cezbetmeyi başardı. Ve bu iş için biçilmiş kaftan olduğunu düşündüğüm opencv ile çalışmaya başladım.
Öncelikle yapmamız gereken kütüphaneleri ve namespace'leri projemize dahil etmek:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <windows.h>
Daha sonrasında main fonksiyonumuza geçiyoruz. İlk yapmamız gereken şey konsol içinde imleç kontrolü için Windows API ile haberleşmek:
CONSOLE_CURSOR_INFO cursorInfo;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
cursorInfo.bVisible = false;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
Daha sonrasında opencv içinden kameramıza erişiyoruz:
VideoCapture cap(0);
if (!cap.isOpened())
{
cerr << "Kamera acilamadi!" << endl;
getchar();
}
Kamera görüntüsünün işlenmesini kolaylaştırmak adına gri tonlara çekiyoruz ve alanı konsol ekranına sığacak şekilde boyutlandırıyoruz:
cvtColor(frame, gray, COLOR_BGR2GRAY);
resize(gray, gray, Size(80, 40), 0, 0, INTER_LINEAR);
Artık görüntü işlemesine ve parlaklığa göre konsol ekranına ascii art basmaya geçebiliriz:
for (int y = 0; y < frame.rows; y++)
{
for (int x = 0; x < frame.cols; x++)
{
int pixel = frame.at<uchar>(y, x);
char asciiChar = ASCII_CHARS[pixel * ASCII_CHARS.length() / 256];
cout << asciiChar;
}
cout << endl;
}
Son olarak kodumuzun genel yapısı şu şekilde:
Gördüğüm en güzel en başarılı projelerden biri daha iyilerinin geleceğinden şüphem yok sabırsızlıkla bekliyorum başarılar🏅
Gayet güzel bir fikir olmuş başarılı bir çalışma
Çok güzel bir yazı olmuş.
Ellerine fikrine sağlık. Bu tarz projeyi yapmak düşünmek nasıl başarıyorsun bilmiyorum vallaha tebrik ederim.
Nerden geliyor böyle projeler yapmak, gerçekten keyifli bir proje olmuş:)