Bir resmin boş yerlerini atmak.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Bir resmin boş yerlerini atmak.

Mesaj gönderen erkan1525 »

Merhaba üstadlar.
Elimde bir resim var örneğin 1000x1000 olsun
bu resmin belirsiz bir yerinde (Ortada kenarda veya köşede) 300x150 ebatında bir görüntü olsun (Mesela tarayıcıdan taranan kimlik)
Delphi ile sadece görüntü olan yeri almak istiyorum. Yani beyaz yerleri tespit edip çıkaracak ve bana sadece 300x150 ebatındaki görüntüyü verecek.

Bunu nasıl yaparım????
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Bir resmin boş yerlerini atmak.

Mesaj gönderen mrmarman »

Buradaki linkteki OCR makalasini bir incelemek isteyebilirsin.

İçerisinde harfleri boşluklardan ayırarak ayıran (DilimlereAyir procedure kasıt) kısım senin istediğin kısımdır.
Resim
Resim ....Resim
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: Bir resmin boş yerlerini atmak.

Mesaj gönderen erkan1525 »

mrmarman yazdı:Buradaki linkteki OCR makalasini bir incelemek isteyebilirsin.

İçerisinde harfleri boşluklardan ayırarak ayıran (DilimlereAyir procedure kasıt) kısım senin istediğin kısımdır.
Abi çok detaylı bakamadım ama.. galiba pixel renklerine bakmamız gerekiyor. Fakat belli bir renk aralığını nasıl karşılaştırabiliriz. Örneğin 1 beyaz olsa ve gri de 10 olsa beyaz ve gri arasındaki ara renklerde 1 ile 10 arasında olsa 1 ile 5 arasını beyaz varsayıp temizlerdik renkllerde belli bir aralık nasıl belirtebilirim?
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Bir resmin boş yerlerini atmak.

Mesaj gönderen G.Arkas »

erkan1525 yazdı:
mrmarman yazdı:Buradaki linkteki OCR makalasini bir incelemek isteyebilirsin.

İçerisinde harfleri boşluklardan ayırarak ayıran (DilimlereAyir procedure kasıt) kısım senin istediğin kısımdır.
Abi çok detaylı bakamadım ama.. galiba pixel renklerine bakmamız gerekiyor. Fakat belli bir renk aralığını nasıl karşılaştırabiliriz. Örneğin 1 beyaz olsa ve gri de 10 olsa beyaz ve gri arasındaki ara renklerde 1 ile 10 arasında olsa 1 ile 5 arasını beyaz varsayıp temizlerdik renkllerde belli bir aralık nasıl belirtebilirim?
Yine aynı makalede siyahbeyazyap procedure'üne bakabilirsin.
Resim
Kullanıcı avatarı
alguli
Üye
Mesajlar: 35
Kayıt: 04 Nis 2007 01:03

Re: Bir resmin boş yerlerini atmak.

Mesaj gönderen alguli »

Üstad rgd karşılaştırması yaparak Blue değerine bakıp 0-255 aralığında beyaz mı değil mi karar verebilirsin.
0: beyaz
255 siyah
sen, rgb nin blue değerinin 120 üstünde kalanı renkli, altında kalanı beyaz olarak kabul edebilirsin.
Tabii bunu yaparken pixelleri yeniden oluşturup 120 nin altında ve üstünde kalanlara tek renk atayarak deneme yapmanı tavsiye ederim.
Kolay gelsin.
Hayat yalanlarla dolu bir aşktır.
Gerçek aşka erişince o da biter.
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: Bir resmin boş yerlerini atmak.

Mesaj gönderen erkan1525 »

alguli yazdı:Üstad rgd karşılaştırması yaparak Blue değerine bakıp 0-255 aralığında beyaz mı değil mi karar verebilirsin.
0: beyaz
255 siyah
sen, rgb nin blue değerinin 120 üstünde kalanı renkli, altında kalanı beyaz olarak kabul edebilirsin.
Tabii bunu yaparken pixelleri yeniden oluşturup 120 nin altında ve üstünde kalanlara tek renk atayarak deneme yapmanı tavsiye ederim.
Kolay gelsin.
Doğru RGB yi hiç akıl edemedim :) Teşekkür ederim.
anonymousdelphicoder
Üye
Mesajlar: 152
Kayıt: 16 May 2014 11:23

Re: Bir resmin boş yerlerini atmak.

Mesaj gönderen anonymousdelphicoder »

Bu sordugunuzu daha once yapmistim fakat her beyaz pixel atamazsijiz. En kosedeki pixellere kadar inmeniz gerek ornegin resim tam ortada olsun sagdan soldan ustten ve alttan taramaniz lazim en son karsilastiginiz beyaz pixel baz almaniz lazim ornegin mavi kirmizi yesil turuncu ve asil goruntunun icinde.beyazida iceren bir kare olsun ve bu kare beyaz bir tuvalin icinde olsun sagdan tariyoruz sagdan 20.pixel beyaz fakat 21.pixel turuncu burada 20.pixel sinir olarak alinmali ve sagdan tarama durdurulmali cunku asil almak istediginiz resmin icinde de beyaz renk olabilir ki vardir da :) bu yontemleri her kose icin yaptikdan sonra olculer ve konumlar zaten matematiksel olarak cikiyor sol taramada 300.pixel sinir olsun sag taramada 700.pixel olsun right scan- left scan = 700 - 300 = 400 pixel genislik crop islemini ise 300 den baslatip genisligi 400 verdiginizde istediginizi elde edeceksiniz yukaridan asagisi icinde ayni mantigi yapiniz ve islem tamam.

Kolay gelsin
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: Bir resmin boş yerlerini atmak.

Mesaj gönderen erkan1525 »

Aynen öyle....
Benim gibi acemiler için yazıyorum.
En üstten aşağı doğru
en sağdan sola doğru
en alttan üste doğru ve
en soldan sağa doğru taratıp beyaz olmayan pixel ile karşılaşınca sınır bu demelisiniz.

Tabi mesela bir tarayıcıdan aldığınız resmin arkaplanı tamamen beyaz olmaz. Gri pembemsi mavimsi v.s v.s olabilir

Bunun için rengin Reg Green ve Blue değerini alın. Renk ne kadar açıksa R,G,B değerleri o kadar yüksek olur. Her değeri tek tek karşılaştırmanıza gerek yok.

Bulduğunuz değerleri toplayın max 255*3=765 olabilir. Yani 765 beyazdır. Bu değer küçüldükçe renk (pembe mavi gri farketmez) koyulaşır.

Renk sınır mı değilmi karar vermek için aşağıdaki gibi bir karşılaştırma yapmalısınız.
Tolerans değeri 150 olsun.

if RGBToplam< (765-150) then
sınırı bulduk...
Cevapla