Sayfayı Yazdır | Pencereyi Kapat

Fotoğraf ile hastalık tespiti servisi

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1187
Tarih: 04 Eylül 2025 Saat 03:49
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Fotoğraf ile hastalık tespiti servisi
Mesajı Yazan: bedir_agdemir
Konu: Fotoğraf ile hastalık tespiti servisi
Mesaj Tarihi: 20 Ağustos 2025 Saat 16:20
Fotoğrafı çekip gönderdikten sonra Instace of "TclProImage" not created. hatası alıyorum 
uAnaliz birimi
const
  GEMINI_API_KEY = ''; 

  var
    restIstegi: TclRest;
    base64Resim, gelenCevap, geminiCevap, prompt, jsonMektup, apiUrl: String;
    analizEdilecekDosyaYolu: String;

  analizEdilecekDosyaYolu = Clomosy.GlobalVariableString;

  if (analizEdilecekDosyaYolu <> '')
  {
    restIstegi = TclRest.Create;
    try
      ShowMessage('Fotoğraf yapay zekaya gönderiliyor, lütfen bekleyin...');
      Clomosy.ProcessMessages;

      base64Resim = Clomosy.FileToBase64(analizEdilecekDosyaYolu);

      apiUrl = ' https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=" rel="nofollow - https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key= ' + GEMINI_API_KEY;
      prompt = 'Bu tarım bitkisinin fotoğrafını incele. Üzerinde herhangi bir hastalık belirtisi var mı? Varsa, hastalığın adı ne olabilir ve çiftçiye ne gibi bir öneride bulunursun? Cevabını kısa ve anlaşılır bir şekilde ver.';
      jsonMektup = '{ "contents":[{"parts":[ {"text": "' + prompt + '"}, {"inline_data": { "mime_type":"image/jpeg", "data": "' + base64Resim + '" }} ]}]}';

      restIstegi.BaseURL = apiUrl;
      restIstegi.Method = rmPOST;
      restIstegi.AddBody(jsonMektup, 'application/json');
      restIstegi.Execute;
      gelenCevap = restIstegi.Response;

      geminiCevap = clGetStringAfter(gelenCevap, '"text": "');
      geminiCevap = clGetStringTo(geminiCevap, '"');
      geminiCevap = clGetStringReplace(geminiCevap, '\\n', #13#10);

      if (geminiCevap <> '')
      {
        ShowMessage('Yapay Zeka Analiz Sonucu:' + #13#10 + geminiCevap);
      }
      else
      {
        ShowMessage('Yapay zekadan cevap alınamadı.');
      }

  }
}



Cevaplar:
Mesajı Yazan: Developer
Mesaj Tarihi: 20 Ağustos 2025 Saat 16:47
Merhaba Bedir 
Projenin butun kodlarini paylasabilir misin?


Mesajı Yazan: bedir_agdemir
Mesaj Tarihi: 20 Ağustos 2025 Saat 16:48
// ======================================================================
// BİRİM: uAnaUygulama 
// ======================================================================

var
  anaForm: TclStyleForm;
  konumButton, havaDurumuButton, haritaButton, tohumOneriButton, sohbetButton, cikisButton, analizButton: TclProButton;
  sonucLabel, havaDurumuLabel, baslikLabel: TclProLabel;
  tohumOneriMemo: TclMemo;
  anaScrollBox: TclVertScrollBox;
  ustPanel, adim1Panel, adim2Panel, adim3Panel, adim4Panel, adim5Panel: TclProPanel;
  geciciResimAnaliz: TclProImage;
  analizUnit: TclUnit;
  gonderilecekVeri: TclStringList;
  konumUnit: TclUnit;
  servislerUnit: TclUnit;
    
void konumButonunaBasildi;
{
  konumUnit = TclUnit.Create;

    konumUnit.UnitName = 'uKonum';
    konumUnit.CallerForm = anaForm;
    konumUnit.Run;

  }

void havaDurumuButonunaBasildi;
{
  servislerUnit = TclUnit.Create;
  
    Clomosy.GlobalVariableInteger = 1;
    servislerUnit.UnitName = 'uServisler';
    servislerUnit.CallerForm = anaForm;
    servislerUnit.Run;
  
    servislerUnit.Free;
  }


void haritaButonunaBasildi;

{
  servislerUnit = TclUnit.Create;
  
    Clomosy.GlobalVariableInteger = 2;
    servislerUnit.UnitName = 'uServisler';
    servislerUnit.CallerForm = anaForm;
    servislerUnit.Run;
  
    servislerUnit.Free;
  }

void tohumOneriButonunaBasildi;
var
  servislerUnit: TclUnit;
{
  servislerUnit = TclUnit.Create;
  
    Clomosy.GlobalVariableInteger = 3;
    servislerUnit.UnitName = 'uServisler';
    servislerUnit.CallerForm = anaForm;
    servislerUnit.Run;
  
    servislerUnit.Free;
  }


void sohbetButonunaBasildi;
var
  sohbetUnit: TclUnit;
{
  sohbetUnit = TclUnit.Create;
  
    sohbetUnit.UnitName = 'uSohbet';
    sohbetUnit.CallerForm = anaForm;
    sohbetUnit.Run;
  
    sohbetUnit.Free;
  }


void analizButonunaBasildi;

{
  Clomosy.ImageChooser(anaForm, geciciResimAnaliz);

  if (geciciResimAnaliz.clProSettings.PictureSource <> '')
  {
    analizUnit = TclUnit.Create;
    
      gonderilecekVeri = Clomosy.StringListNew;
      gonderilecekVeri.Add(geciciResimAnaliz.clProSettings.PictureSource);
      Clomosy.GlobalVariableStringList = gonderilecekVeri;
      
      analizUnit.UnitName = 'uAnaliz';
      analizUnit.CallerForm = anaForm;
      analizUnit.Run;
    
      analizUnit.Free;
    }
  }

void cikisYapButonunaBasildi;
{
  anaForm.Close;
}

  anaForm = TclStyleForm.Create(Self);
  geciciResimAnaliz = anaForm.AddNewProImage(anaForm, 'geciciResimAnaliz');
  geciciResimAnaliz.Visible = True;
  anaForm.clSetCaption('Çiftçi Destek Uygulaması');
  anaForm.clSetStyle(anaForm.LightSB);
  anaForm.SetFormBGImage(' https://clomosy.com/demos/bg4.jpg" rel="nofollow - https://clomosy.com/demos/bg4.jpg ');

  ustPanel = anaForm.AddNewProPanel(anaForm, 'ustPanel');
  ustPanel.Align = alTop; ustPanel.Height = 80;
  ustPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#CC212529');
  ustPanel.SetclProSettings(ustPanel.clProSettings);

  baslikLabel = anaForm.AddNewProLabel(ustPanel, 'baslikLabel', 'ÇİFTÇİ DESTEK UYGULAMASI');
  baslikLabel.Align = alClient;
  baslikLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff'); baslikLabel.clProSettings.FontSize = 22;
  baslikLabel.clProSettings.TextSettings.Font.Style = [fsBold]; baslikLabel.clProSettings.TextSettings.HorzAlign = taCenter;
  baslikLabel.SetclProSettings(baslikLabel.clProSettings);

  cikisButton = anaForm.AddNewProButton(ustPanel, 'cikisButton', 'Çıkış Yap');
  cikisButton.Align = alRight; cikisButton.Width = 120;
  cikisButton.Margins.Right = 10; cikisButton.Margins.Top = 15; cikisButton.Margins.Bottom = 15;
  cikisButton.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF');
  cikisButton.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#dc3545');
  cikisButton.clProSettings.IsRound = True;
  cikisButton.SetclProSettings(cikisButton.clProSettings);

  anaScrollBox = anaForm.AddNewVertScrollBox(anaForm, 'anaScrollBox');
  anaScrollBox.Align = alClient;

  adim1Panel = anaForm.AddNewProPanel(anaScrollBox, 'adim1Panel');
  adim1Panel.Align = alTop; adim1Panel.Height = 130;
  adim1Panel.Margins.Top = 15; adim1Panel.Margins.Left = 15; adim1Panel.Margins.Right = 15;
  adim1Panel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#E6FFFFFF'); adim1Panel.clProSettings.IsRound = True; adim1Panel.SetclProSettings(adim1Panel.clProSettings);
  
  konumButton = anaForm.AddNewProButton(adim1Panel, 'konumButton', '1. Adım: Konumumu Bul');
  konumButton.Align = alTop; konumButton.Height = 60;
  konumButton.Margins.Top = 10; konumButton.Margins.Left = 10; konumButton.Margins.Right = 10;
  konumButton.clProSettings.FontSize = 17;
  konumButton.SetclProSettings(konumButton.clProSettings);

  sonucLabel = anaForm.AddNewProLabel(adim1Panel, 'sonucLabel', 'Konum bilgisi bekleniyor...');
  sonucLabel.Align = alClient; sonucLabel.Margins.Top = 5;
  sonucLabel.clProSettings.TextSettings.HorzAlign = taCenter; sonucLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#6c757d');
  sonucLabel.SetclProSettings(sonucLabel.clProSettings);

  adim2Panel = anaForm.AddNewProPanel(anaScrollBox, 'adim2Panel');
  adim2Panel.Align = alTop; adim2Panel.Height = 130;
  adim2Panel.Margins.Top = 10; adim2Panel.Margins.Left = 15; adim2Panel.Margins.Right = 15;
  adim2Panel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#E6FFFFFF'); adim2Panel.clProSettings.IsRound = True; adim2Panel.SetclProSettings(adim2Panel.clProSettings);
  
  havaDurumuButton = anaForm.AddNewProButton(adim2Panel, 'havaDurumuButton', '2. Adım: Hava Durumunu Getir');
  havaDurumuButton.Align = alTop; havaDurumuButton.Height = 60;
  havaDurumuButton.Margins.Top = 10; havaDurumuButton.Margins.Left = 10; havaDurumuButton.Margins.Right = 10;
  havaDurumuButton.Enabled = False;
  havaDurumuButton.clProSettings.FontSize = 17;
  havaDurumuButton.SetclProSettings(havaDurumuButton.clProSettings);

  havaDurumuLabel = anaForm.AddNewProLabel(adim2Panel, 'havaDurumuLabel', '');
  havaDurumuLabel.Align = alClient; havaDurumuLabel.Margins.Top = 5;
  havaDurumuLabel.clProSettings.TextSettings.HorzAlign = taCenter; havaDurumuLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#17a2b8');
  havaDurumuLabel.clProSettings.TextSettings.Font.Style = [fsBold]; havaDurumuLabel.SetclProSettings(havaDurumuLabel.clProSettings);

  adim3Panel = anaForm.AddNewProPanel(anaScrollBox, 'adim3Panel');
  adim3Panel.Align = alTop; adim3Panel.Height = 80;
  adim3Panel.Margins.Top = 10; adim3Panel.Margins.Left = 15; adim3Panel.Margins.Right = 15;
  adim3Panel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#E6FFFFFF'); adim3Panel.clProSettings.IsRound = True; adim3Panel.SetclProSettings(adim3Panel.clProSettings);
  
  haritaButton = anaForm.AddNewProButton(adim3Panel, 'haritaButton', '3. Adım: Tarlamı Haritada Göster');
  haritaButton.Align = alClient;
  haritaButton.Enabled = False;
  haritaButton.clProSettings.FontSize = 17;
  haritaButton.SetclProSettings(haritaButton.clProSettings);

  adim4Panel = anaForm.AddNewProPanel(anaScrollBox, 'adim4Panel');
  adim4Panel.Align = alTop; adim4Panel.Height = 250;
  adim4Panel.Margins.Top = 10; adim4Panel.Margins.Left = 15; adim4Panel.Margins.Right = 15;
  adim4Panel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#E6FFFFFF'); adim4Panel.clProSettings.IsRound = True; adim4Panel.SetclProSettings(adim4Panel.clProSettings);
  
  tohumOneriButton = anaForm.AddNewProButton(adim4Panel, 'tohumOneriButton', '4. Adım: Tohum Önerisi Al');
  tohumOneriButton.Align = alTop; tohumOneriButton.Height = 60;
  tohumOneriButton.Margins.Top = 10; tohumOneriButton.Margins.Left = 10; tohumOneriButton.Margins.Right = 10;
  tohumOneriButton.Enabled = False;
  tohumOneriButton.clProSettings.FontSize = 17;
  tohumOneriButton.SetclProSettings(tohumOneriButton.clProSettings);

  tohumOneriMemo = anaForm.AddNewMemo(adim4Panel, 'tohumOneriMemo', '');
  tohumOneriMemo.Align = alClient;
  tohumOneriMemo.Margins.Top = 10; tohumOneriMemo.Margins.Left = 10; tohumOneriMemo.Margins.Right = 10; tohumOneriMemo.Margins.Bottom = 10;
  tohumOneriMemo.ReadOnly = True;

  adim5Panel = anaForm.AddNewProPanel(anaScrollBox, 'adim5Panel');
  adim5Panel.Align = alTop; adim5Panel.Height = 100;
  adim5Panel.Margins.Top = 10; adim5Panel.Margins.Left = 15; adim5Panel.Margins.Right = 15; adim5Panel.Margins.Bottom = 10;
  adim5Panel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#E6FFFFFF'); adim5Panel.clProSettings.IsRound = True; adim5Panel.SetclProSettings(adim5Panel.clProSettings);
  
  analizButton = anaForm.AddNewProButton(adim5Panel, 'analizButton', #13#10'FOTOĞRAFLA BİTKİ ANALİZİ YAP'#13#10'(Hastalık Tespiti)');
  analizButton.Align = alClient;
  analizButton.clProSettings.FontSize = 18;
  analizButton.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  analizButton.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#28a745');
  analizButton.clProSettings.TextSettings.Font.Style = [fsBold];
  analizButton.SetclProSettings(analizButton.clProSettings);
  analizButton.Enabled = True; // Başlangıçta pasif

  sohbetButton = anaForm.AddNewProButton(anaForm, 'sohbetButton', 'Akıllı Asistan ile Sohbet Et');
  sohbetButton.Align = alBottom; sohbetButton.Height = 70;
  sohbetButton.Margins.Top = 10; sohbetButton.Margins.Left = 15; sohbetButton.Margins.Right = 15; sohbetButton.Margins.Bottom = 10;
  sohbetButton.clProSettings.FontSize = 18; sohbetButton.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  sohbetButton.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2c7be5'); sohbetButton.clProSettings.TextSettings.Font.Style = [fsBold];
  sohbetButton.clProSettings.IsRound = True; sohbetButton.clProSettings.RoundHeight = 15; sohbetButton.clProSettings.RoundWidth = 15;
  sohbetButton.SetclProSettings(sohbetButton.clProSettings);

  anaForm.AddNewEvent(konumButton, tbeOnClick, 'konumButonunaBasildi');
  anaForm.AddNewEvent(havaDurumuButton, tbeOnClick, 'havaDurumuButonunaBasildi');
  anaForm.AddNewEvent(haritaButton, tbeOnClick, 'haritaButonunaBasildi');
  anaForm.AddNewEvent(tohumOneriButton, tbeOnClick, 'tohumOneriButonunaBasildi');
  anaForm.AddNewEvent(sohbetButton, tbeOnClick, 'sohbetButonunaBasildi');
  anaForm.AddNewEvent(cikisButton, tbeOnClick, 'cikisYapButonunaBasildi');
  anaForm.AddNewEvent(analizButton, tbeOnClick, 'analizButonunaBasildi');

  anaForm.Run;
}
// MAİN

{
Clomosy.RunUnit('uAnauygulama');

diğer servisler  çalışıyor 


Mesajı Yazan: Developer
Mesaj Tarihi: 20 Ağustos 2025 Saat 18:18
Merhaba Bedir 
Main icerisinde kodlamayi :
      gonderilecekVeri = Clomosy.StringListNew;
      gonderilecekVeri.Add(geciciResimAnaliz.clProSettings.PictureSource);
      Clomosy.GlobalVariableStringList = gonderilecekVeri;
ama cagirirken  analizEdilecekDosyaYolu = Clomosy.GlobalVariableString; bu seklide yukleme yapilmis. Dogrusu icin   https://www.docs.clomosy.com/index.php?title=Global_Variables" rel="nofollow - https://www.docs.clomosy.com/index.php?title=Global_Variables bu linkideki ornegi inceler misin?



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net