C ile Fotoğraf Çekme ve Kaydetme
Giriş
Fotoğrafçılık, günümüz dijital dünyasında önemli bir rol oynamaktadır. C programlama dili, fotoğraf çekme ve kaydetme gibi görüntü işleme görevlerini gerçekleştirmek için güçlü bir araç sunar. Bu makale, C kullanarak nasıl fotoğraf çekileceğini ve kaydedileceğini adım adım açıklayacaktır.
Gerekli Kütüphaneler
Fotoğraf çekmek ve kaydetmek için aşağıdaki kütüphanelere ihtiyacınız olacaktır:
- OpenCV (Open Source Computer Vision Library)
- libjpeg
Adım 1: OpenCV’i Kurma
OpenCV’yi işletim sisteminize kurmak için aşağıdaki adımları izleyin:
- OpenCV’nin resmi web sitesinden en son sürümü indirin: https://opencv.org/releases/
- İndirilen dosyayı çıkarın ve kurulum talimatlarını izleyin.
Adım 2: libjpeg’i Kurma
libjpeg’i kurmak için aşağıdaki adımları izleyin:
- libjpeg’in resmi web sitesinden en son sürümü indirin: https://www.ijg.org/files/
- İndirilen dosyayı çıkarın ve kurulum talimatlarını izleyin.
Adım 3: C Kodunu Yazma
Aşağıdaki C kodunu kullanarak fotoğraf çekebilir ve kaydedebilirsiniz:
“`c
include
include
int main() {
// Kamerayı açın
cv::VideoCapture cap(0);
// Kameranın açık olup olmadığını kontrol edin
if (!cap.isOpened()) {
std::cerr << "Kamera açılamadı!" << std::endl;
return -1;
}
// Bir kare alın
cv::Mat frame;
cap >> frame;
// JPEG sıkıştırma kalitesini ayarlayın (0-100)
int quality = 95;
// JPEG dosyasını açın
FILE *fp = fopen("foto.jpg", "wb");
// JPEG sıkıştırma nesnesini oluşturun
jpeg_compress_struct cinfo;
jpeg_error_mgr jerr;
// Sıkıştırma nesnesini ayarlayın
jpeg_create_compress(&cinfo);
cinfo.err = jpeg_std_error(&jerr);
jpeg_stdio_dest(&cinfo, fp);
// Sıkıştırma parametrelerini ayarlayın
cinfo.image_width = frame.cols;
cinfo.image_height = frame.rows;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo, quality, TRUE);
// Verileri sıkıştırın
jpeg_start_compress(&cinfo, TRUE);
for (int i = 0; i < frame.rows; i++) {
jpeg_write_scanlines(&cinfo, &frame.data[i * frame.step], 1);
}
jpeg_finish_compress(&cinfo);
// JPEG dosyasını kapatın
fclose(fp);
// Kamerayı kapatın
cap.release();
return 0;
}
“`
Adım 4: Kodu Derleme ve Çalıştırma
Kodu derlemek ve çalıştırmak için aşağıdaki adımları izleyin:
- Bir terminal veya komut satırı açın.
- Kodu içeren dosyayı kaydedin (örneğin,
foto.c
). - Aşağıdaki komutu kullanarak kodu derleyin:
gcc foto.c -o foto -lopencv_core -lopencv_imgproc -lopencv_highgui -ljpeg
- Derlenen kodu çalıştırmak için aşağıdaki komutu kullanın:
./foto
Faydalı Kaynaklar
- OpenCV Resmi Web Sitesi: https://opencv.org/
- libjpeg Resmi Web Sitesi: https://www.ijg.org/files/
- C ile Görüntü İşleme: https://www.tutorialspoint.com/cprogramming/c_image_processing.htm
- C ile Fotoğraf Çekme ve Kaydetme Örneği: https://www.codeproject.com/Articles/514222/Capture-and-Save-Image-using-OpenCV-and-Cplusplus
Sonuç
Bu makale, C kullanarak nasıl fotoğraf çekileceğini ve kaydedileceğini açıklamıştır. OpenCV ve libjpeg kütüphanelerini kullanarak, kullanıcılar dijital kameralardan fotoğraf çekebilir ve bunları JPEG formatında kaydedebilirler. Bu bilgiler, görüntü işleme, bilgisayarlı görü ve diğer ilgili alanlarda uygulamalar geliştirmek için kullanılabilir.