|
|
| |||||||
| Programlama C ++ , C # , COMPONENT, DELPHI , FLASH, JAVA - JSP, VISUAL BASIC ,VISUAL BASIC.NET ,WML, XML |
| |
|
| | | LinkBack | Seçenekler |
| |||
| Merhaba arkadaşlar vb.nette bir proje üzerinde çalışıyorum yapamadığım şeyler var bunlardan bir tanesini sormak istedim bana zor geldi belki 2 saniyede yapabilecek arkadaşımız vardır diye şansımı denemek istedim 2 resim kutusu koyuyoruz 1. resim kutusunun adı genel olsun 2. resim kutusunun adı özel olsun genele printscreen görüntüsünü atıyoruz özele ise printscreenden kestiğimiz bir bölümün resmini atıyoruz(kapat butonu gibi) genelde özeli aratıp kordinatını bulmamız gerkiyor işte bunu yapamadım bir arkadaş binary ye dönüştürüp arama yaparsak bulabileceğimizi söyledi ama yapamadım şimdiden teşekkürler örnek resimler Genel ![]() Özel |
| |||
| o iş o kadar kolay değil hocam. resimleri pixel pixel taratacaksın da sonra belirli alanlarda karşılaştırma yapacaksın da.. hem bu işlem uzun sürer hem hata oranı yüksek olur. belki bunun için yazılmış özel apiler kullanılabilir ama onlarda ücretli olur.. millet bir plaka resmini okutturabilmek için k*çını yırtıyor ama aklım şöyle bir şey geliyor, renk değişimi yaparak o bahsettiğin butonun rengini ayıklayabilirsin.. bu konu kolay bir iş değil. image processing olayını araştır. en iyi biçimde de matlab de yaparsın ama ona da girdin mi işin içinden çıkmak zor handle numarasını al diyeceğim swf demiştin bana sanırm ondaki kontrollerden handle da alamazsın.. yani pek iç acıcı bir sonuç yok ... olsa bile uğraştıracak gibi görünüyor, değer mi? bilemem..şuanlık bu kadar aklıma geldi.. kolay gelsin |
| |||
| Diyelim A resmi 1000*500 olsun. Diyelim B resmi 20*20 olsun. Öncelikle belirteyim, yorabilir sistemi. A resminde 0.pixelde başlatıp 1000.pixele gidene kadar, 20*20 boyutunda resim böleriz. Böldügümüz resmi B resmiyle karşılaştırırız. Eğer resim o ise, döngüyü durdurup pixel i alabilirsin. Resim En aşağıda ise, aşağıdan başlatman dogru olacaktır, sağda ise 1000.pixel den azalta azalta bölmen dogru olacaktır. |
| |||
| Alıntı:
|
| |||
| Ana resim 1000x1000 ikinci resim 30x30 çözünürlüğünde olduğunu varsayalım. Önce ikinci resmin ilk pixelini alırsın.(RGB değerini yani.) Daha sonra ana resmi ilk pixelden başlayıp yatay olarak taramaya başlarsın. 1x1 , 2x1 , 3x1 .. diye. 1000x1 olunca alt satıra geçersin 1x2 1x3 ... diye gider. Tararken bulduğun pixel, ikinci resmin ilk pixeliyle eşleşiyorsa bu sefer birinci resmin bi sonraki pixeli ile ikinci resmin ikinci pixelinin eşleşip eşleşmediğine bakarsın.Eğer eşleşiyorsa 3. diye gidersin.Daha sonra alt satırları da doğrulatırsan eşleşme vardır ve eşleşmenin başladığı kordinatları kullanıcıya verirsin.Eğer eşleştirirken, eşleşme olmazsa bu sefer ikinci resmin ilk pixelini tekrar ele alıp taramaya devam edersin. Çözünürlük arttıkça döngü sayısı da artar.Bazı optimizasyonlarla performansı arttırabilirsin. |
| |||
| Yapacağın işlem çok basit aslında, öncelikle her iki resmide pixel değerlerini diziye alırsın. 100x100 ana resim olsun, 20x20 aranacak resim olsun, aradığın küçük resmin ekran dışına taşmadığını varsayarsak (ki böyle olmalı yoksa tam olarak emin olamazsın) ilk resimde 1x1 den 80x1 e kadar gider pixel değerini kontrol edersin, aynı ise satırın kalanı ve alt satırda ki değerler için kontrol yaparsın, bunu 80x80 koordinatına kadar kontrol edersin. Son olarak mümkün olduğunca renk sayısını az tutmaya çalış. Dolaylı yoldan hızını artıracaktır. Anladığım kadarı ile ekranda bir yere mouse click yaptıracaksın, sayfa adresini verirsen inceledikten sonra belki daha fazla yardımcı olabilirim. |
| |||
| resmi binary'ye dönüştürerek çok hızlı sonuç bulabilirsiniz, ama resmi griye dönüştürerek de aynı sonucu bulabilirsiniz. daha önce c#'ta resmi griye dönüştüren bir uygulama yazmıştım: http://hasanhuseyincakir.com.tr/prog...isual-c-sharp/ .net olduğu için vb.net'e kolaylıkla çevirebilirsiniz kodları. aranan resim: 1000*1000 çözünürlükte olsun, aradığınız resim ise 20*20 px olsun. resim bilgileri bmp formatında 554 byte tutar. 555. byte: 1. px'in R değeri, 556. byte 1. px'in G değeri, 556. byte 1. px'in B değeridir. ve bu şekilde sırayla gider. her iki resmi de gri'ye dönüştürün, ardından küçük resmin 1. px'in 1. byte'ı ile büyük resmin 1. byte'ı ile karşılaştırın eşleşme varsa küçük resmin 2. px'ine geçin, eşleşme yoksa büyük resimde 2. px'e geçin örneğin küçük resmin ilk 20 byte'ını büyük resmin 300. px'de buldunuz, küçük resmin 2. satır bilgilerini büyük resimde aramaya, büyük resmin 1300. px'inden aramaya devam edin. (1000 ekledik çünkü 1 satırda 1000 px var. (bunun için +3000 byte eklemeniz lazım, eğer aramayı gri resimde yapıyorsanız). anlattıklarım karmaşık gelmişse pm olarak msn gönderin brute force search konusunda yardımcı olayım, sadece algoritma olarak ama, vb bilmiyorum malesef
__________________ Signatürü: |
| |||
| Paint.Net yükleyin, mouse ile üzerinde gezindiğiniz her pixelin koordinatlarını görebilirsiniz. Yükledikten sonra Resim>Tuval Boyutu>Çözünürlük değerini piksel/cm seçin. Tamam'a tıklayın. Üst menüden "Birim" değerini de piksel olarak seçtikten sonra mouse ile üzerine geldiğiniz her pikselin koordinatını sağ alt köşede görürsünüz. Belki daha kısa yolu, photoshopta vs. vardır fakat benim bildiğim bu. Umarım işinize yarar. |
![]() |
| Bookmarks |
| Seçenekler | |
| |