OCR Engine İncelemeleri ve HALCON OCR

Sözkonusu olan, endüstriyel görüntü işleme uygulamaları ise, elbette HALCON, herhangi bir OCR engine ile kıyaslanamayacak yeteneklere sahiptir. Bununla birlikte, sözkonusu olan Form (Doküman) OCR işlemi ise, o zaman diğer alternatiflere de bir göz atmak ta fayda olabilir (mi?)

İncelemelerime HALCON dışında, yaygın olarak bilinen farklı ürün ile başladım. Abbyy FineReader Engine 10.0, Google Tesseact OCR, Microsoft Office Document Imaging.

Bu yazıda her iki engine OCR engine, yetenekleri ve HALCON ile kıyaslamasını yapmayı düşünüyorum.

Abbyy FineReader ile başlayalım. Şüphesiz OCR denince ilk akla gelen yazılım. Yılların tecrübesine sahip bu Ukrayna yazılımı, aldığı sayısız ödül sayesinde beklentilerimizi en üst seviyede tutmamızı sağladı.

Artıları :

  • Eksiksiz Profesyonel Bir Ürün
  • Çok İyi Dökümantasyon
  • Tüm Geliştirme Ortamlarını Desteklemesi
  • Kolay Kurma, Öğrenme
  • Blurry, skewed (bulanık, dönük) metinleri OCR edebilme
  • Form Alanı Tanımlayabilme (Region)
  • Mobile Platform desteği
  • Geniş çok dilde dictionary (lexicon) desteği

Eksileri

  • Çağdışı ve çok uzun lisanslama süreci
  • Yüksek lisanslama ücretleri ve lisanslama politikası
  • Yavaş OCR etmesi

Denemek için bile olsa, FineReader kurmak istiyorsanız, öncelikle kötü bir niyetinizin olmadığını, aksi halde akla hayale gelmeyecek kadar çok para cezasına çarptırılacağınızı kabul ettiğiniz dökümanları eksiksiz doldurup, fax, mail, posta, kargo (şaka yapmıyorum) ile hem Ukrayna, hem de Türkiye ofislerine göndermelisiniz. Eğer başvurunuz kabul edilirse, size bir ftp şifresi verilecek ve ürünün 2 aylık deneme versiyonunu indirmeye hak kazanacaksınız.

Sonuçta, FineReader free form (döküman) tipi işlemlerde kabul edilebilir bir OCR kalitesi sunmaktadır. Eğer hızlı çalışmak gibi bir beklentiniz yoksa, sonuç ta gayet tatminkardır.

Ters dönmüş belgeler, çizginin üzerine yazılmış alanlar gibi durumlarda başarılı olamadı (ki bu kadarını beklemiyordum zaten)

TesserAct

Sponsorunun google olması, ürüne ciddi eğilmemi sağladı. Çok kısa download (5.8 MB) sonrası hemen kurup denemeye başlayabiliyorsunuz.

Artıları

  • Sponsored By Google
  • Open source (dolayısıyla çokça geliştirici)
  • Oldukça küçük ve hızlı
  • Çoklu dil desteği
  • Ücretsiz olması

Eksileri

  • Arkasında ciddi bir firma olmaması
  • Karmaşık dökümantasyon (wiki style)
  • Henüz tam oturmamış izlenimi vermesi
  • Web platform desteği
  • Her geçen gün daha da gelişmesi

TesserAct ile yaptığım denemelerde, FineReader kadar yüksek skorlar elde edememekle birlikte, yakın sonuçlar yakaladım. Uygulamanın ciddi bir bütçesi olmayacaksa, TesserAct iyi bir seçenek olabilir.

Ben kişisel olarak, Önce HALCON ile formu iyice temizleyip yine HALCON ile OCR etmeyi düşünüyorum. HALCON ile OCR işlemi yeterince başarılı olamamışsa, o zaman okunamayan yerleri TesserACT ile yeniden deneteceğim. Müşterinin uygulamaya (ve OCR edilecek her sayfaya) bütçe ayırabilmesi durumunda, FineReader elbette daha ciddi bir yaklaşım olacaktır.

MODI (Microsoft Office Document Imaging), Office 2007 ile birlikte ücretsiz olarak gelen, ScanSoft menşeli yazılım.

Artıları

  • Microsoft Desteği
  • Office 2007 ile ücretsiz gelmesi
  • Kullanışlı Arayüz ve Yazılımlarla tam entegrasyon
  • .NET kütüphanesi ile uyum

Eksileri

  • Artık Desteklenmemesi !
  • FineReader kadar yüksek skorlarla OCR edememesi

Aslında MODI, en kolay kurulup ve uygulama geliştirmeye müsait hale gelen seçenek. Buna rağmen artık desteklenmemesi ciddi bir soru işareti oluşturuyor ve şimdilik tarafımca rafa kaldırılıyor.

(Bu konuya yine devam edeceğim)

 

 

 

Posted in Programlama Teknikleri | Tagged , , , | Leave a comment

Jant Tanıma Sistemi

Boyahaneden çıkan jantların, yüzey şekillerine bakılarak tanınması ve ilgili konveyörlere yönlendirilmesi projesini, ülkemizdeki pazar lideri CMS de devreye aldık.

 

Kameranın tam altına gelen jant, sensör yardımıyla algılanır ve konveyör durdurulur. Bu esnada aydınlatma olarak kullanılan power ledler jantın yüzeyini aydınlatır. Fotoğraf çekilir ve çekilen fotoğraf üzerinde “matching” eşleştirme algoritması çalıştırılır.

“Matching” işlemi :

İlk önce jantın konturları (contour) çıkartılır. Konturların düzgün olarak çıkartılabilmesi çok önemlidir. Bunun için konveyör zemini ışığı yansıtmayacak siyah malzeme seçilmiştir. Kırmızı ışık, jantın içe doğru girintilerinde köşe çizgisi oluşturmayacak şekilde kontrast oluşturmalı,  yüzeyi düzgün aydınlatmalı ve tüm yüzeyde homojen olmalıdır. (Beyaz ışık ta kullanılabilir. Jantın yüzeyinin metalik beyaz olması beyaz ışığın patlamasına neden olabilir. Daha soft ve homojen bir beyaz ışık için elektronik balast kullanılmış fluoresan aydınlatma seçilebilir)

Son olarak yapılması gereken, HALCON matching komutları ile çıkartılan konturların daha önceden kaydedilmiş konturlar içinden hangisine en çok benzediğini bulmaktır. (İlgilenenler projede kullanılmış çalışan HALCON kodları için benimle iletişime geçebilirler – mustafa@mavis.com.tr)

Not : Gerçeklenen projede jantların göbek yüksekliğinin ölçülmesi (yüzeyi tamamen aynı fakat iç göbek yükseklikleri farklı ürünlerin ayırt edilmesi), yüzey yine tamamen aynı bijon delikleri farklı yerlerde olan ürünlerin aynı ürün olarak seçilebilmesi vb. zorluklar vardır. Üretim hızı 5-6 sn. de 1 ürün olacak şekildedir. Toplamda bir kaç yüz civarında ürün tanıtılacaktır. Yeni ürün tanıtma ve öğretme ekranı (kelimenin gerçekten de tam anlamıyla) tek tuşla yapılmaktadır. Tüm işlem sonunda belirlenen jant numarası PLC hattına (konveyöre), mürekkep püskürtmeli kod yazma makinasına (yazıcı) ve veritabanına gönderilmektedir.

Sistem bir merkezi ve ona bağlı 6 bilgisayardan oluşmaktadır. Toplam 7 bilgisayar kendi içinde bir network oluşturmuş ve soket haberleşmesi (Socket) yapmaktadırlar. na bilgisayardaki ekran görüntülerine örnekler :

 

Posted in Mavis Proje Günlüğü | Tagged , , , , , , , , | Leave a comment

VYP içinden Direk HALCON kodu Çalıştırma (HDevEngine)

HALCON HDevelop ile yazılan uygulamaları dağıtmak için ya HDevelop içinden export edilen kod yazılım geliştirme ortamı (Visual Studio, C++, Delphi, VB ..) içinden COM ya da .NET ortamında kullanılır (en yaygın yöntem budur) ya da bu geliştirme ortamlarından direk HALCON kodu (hdev uzantılı) çağırılır.

VYP Programında, mevcut görev tanımları yapısına “HDevelop Routine” isminde yeni bir görev eklendi. Bu göreve çalıştırılacak olan HDevelop programı, program adı olarak verilir. Program içinden belirli bir procedure çağırılacaksa bu da belirtilir. (Çoğu kez tüm bir program değilde belirli bir altprogramın çalıştırılması istenir)

VYP, görüntü alma, kamera ayarları vb. işlemleri kendisi yaptığından, HDevelop programının görüntü kaynağından (kamera, dosya vb.) görüntü almasına gerek kalmaz. VYP, tüm giriş parametrelerini çağıracağı programa gönderir. Benzer şekilde tüm çıkış verileri (HTuple) ve nesneleri (HRegion, HObject) VYP tarafından algılanır.

Sonuçta yeniden derleme (compile) etme işlemine gerek kalmaksızın hdev kodunu değiştirerek programın düzgün çalışması sağlanmış olur.

Yapılan ilk testlerde, export edilmiş kodu kullanmak yerine hdev uzantılı HALCON dosyalarını interpreter (yorumlayarak) çalıştıran bu teknik, %1 – %5 arası daha uzun sürmektedir. Yine de getirdiği esneklik düşünüldüğünde, son derece mantıklı bir yaklaşımdır.

Posted in Mavis Kameralı Kontrol Yazılımı | Tagged , , , , , , , | Leave a comment

Ford PVS Programı

(a freeware opensource utility to get string data from Ford (FoMoCo) PVS line and inserts it to SQL database by calling a stored procedure. Stored procedure can easily configure which fields will filled up)

Ford Otosan PVS sistemi, üretim hattında belirli bölgelerden geçen araçlara ait bilgilerin seri porttan iletilmesi sistemidir. Araç hattan geçerken, araca özgü kontroller yapılmak istendiğinde, aracın Vin numarası başta olmak üzere, bu VIN ile ilişkilendirlimiş her türlü ayrıntısına ulaşılabilir.

Her ne kadar seri port kullanımı, son zamanlarda gözden düşmüş olsa da, hala en basit ve en hatasız iletişim protokolüdür. Ford Otosan içinde yer yer 100 m. ye kadar uzunlukta PVS hatları mevcuttur. Altyapı birçok yerde fiberdir. Sık karşılaşılan problemler, çok yüksek gerilim ya da alan etkisinden kaynaklanabilen bozulmalardır. Seri port için USB converter kullanılması da pek tavsiye edilmez.

Mavis olarak, Ford Otosan için gerçekleştirdiğimiz projelerde kullanılmak üzere, jenerik ve bağımsız bir utility şeklinde çalışan PVSListener programını geliştirdik. Program seri portu dinler ve PVS datası alınırsa bunu veritabanına kaydeder.

Program, veritabanına PVS bilgisini orijinal haliyle kaydeder. İlaveten, çalıştırdığı stored procedure ile, bilgiyi istenilen şekilde parse ederek, programcının ihtiyacına uygun tüm alanlara göre uygun biçimde dağıtır. Program, halihazırda çalışmaktadır ve basit yapısı ile tüm projelere uygulanabilir. Mavis tarafından geliştirilen freeware bu uygulama (C# ile geliştirilmiştir) için benimle iletişime geçmeniz yeterlidir. (mustafa@mavis.com.tr)

 

 

 

 

 

 

 

 

 

 

Ford PVS to DB utility, listens ford PVS serial (com) line and inserts an SQL record when PVS string is ready in line. Program completes whole communication process between Ford PVS main computer and client computer (RK512) Program uses a stored procedure to parse PVS string to data table fields, so programmers can easily acces their own fields.

Program is a freeware by MaVis (Machine vision Software Ltd.) and open source (written in C#) . Please feel free to contact me (mustafa@mavis.com.tr) to get complete solution.

Posted in Mavis Proje Günlüğü | Tagged , , , , , , , , , | Leave a comment

Dikiş Varlık Kontrolü

Dynamic Threshold ve Shock Filter Kullanımı

Yakın zamanda yaptığımız bir projede, yapılacak kontrollerden biri kumaşın desenini algılamaktı. Texture olarak bilinen bu çalışma, görüntü işlemenin en zor yanlarından biridir. Her ne kadar HALCON texture algılama üzerine bol miktarda fonksiyon barındırsa da, texture gibi genel bir konuda, her hangi bir fonksiyondan sihirli bir işlev beklenemez. Yapılması gereken, projeye özgü kodlamada bulunmak…

Projede, kumaşın deseni kadar, kenarında dikiş olup olmadığının da kontrol edilmesi gerekiyordu.

Resimdeki orijinal resimde göründüğü gibi, araba koltuk başlığının yan tarafında dikiş olup olmadığının belirlenmesi gerekiyordu. İlk başta kolay gibi görünen bazı uygulamalar, iplik renginin değişmesi, kumaş renginin / deseninin değişmesi vb. faktörlerden dolayı hiç hata vermeden çalışacak bir yapıda olmalıydı. aşağıdaki kod, dikiş izini hatasız olarak tesbit edebilen bir HALCON kodudur. (Denemek için bu resmi alarak kaydedebilirsiniz.)

 

sonuç görüntü :

HALCON kodu

 

read_image (Image, 'K.bmp')
bin_threshold (Image, Region)
reduce_domain (Image, Region, ImageReduced)
shock_filter(ImageReduced, SharpenedImage, 0.5, 10, 'canny', 1)
gray_opening_shape(SharpenedImage, ImageOpening, 25, 25, 'octagon')
gray_closing_shape(SharpenedImage, ImageClosing, 25, 25, 'octagon')
dyn_threshold (ImageOpening, ImageClosing, RegionDynThresh, 50, 'not_equal')
dilation_circle(RegionDynThresh, RegionDilation, 5)
connection(RegionDilation, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 99999)
count_obj(SelectedRegions, Number)
if (Number > 0)
    skeleton(SelectedRegions, Skeleton)
    dev_set_line_width(2)
    *set_line_style (3600, [20,10])
    dev_display(Image)
    dev_display(Skeleton)
endif

Burada asıl işi yapan dynamic_threshold kullanımıdır. shock_filter alınan görüntüde, kenarları belirginleştirmeye yarar. (Datamatrix, karekod, barkod okuma vb. işlemlerde önerilir) Kodda comment edilmiş set_line_style (3600, [20,10]) kodunu da açıp çalıştırırsanız, bulanan dikiş çizgisinin, kesikli olarak gösterildiğini göreceksiniz. set_line_style, HALCON çizgi gösterim biçimini formatlama fonksiyonudur.

Posted in HALCON çalışmaları | Tagged , , , , , , , , , , | Leave a comment

HALCON ile OCR Temelleri

OCR projeleri, diğer görüntü işleme uygulamalarına daha fazla zorluklar içermektedir. HALCON 10, OCR ile ilgili gayet gelişmiş fonksiyonlar sunmakla birlikte (get_text_*) çoğu kez iş, kod yazma ile çözülmektedir.

OCR uygulamalarındaki zorluklar

  • Tüm karakterler düzgün olarak seçilebilmelidir. Homojen olmayan aydınlatmalar, parlayan kısmi yerler sıradan bir görüntü işleme uygulamasında kolaylıkla üzerinden gelinebilen sorunlar iken, OCR uygulamalarında baş belası olabilmektedir.
  • Birbirine çok yakın karakterleri ayırt edebilmek (B, 8, D, 0 vb…) çoğu kez sorun olabilmektedir
  • Değişken font yükseklikleri, genişlikleri, iç içe geçmiş karakterler vb. sorun yaratabilmektedirÖzetle, bu liste uzar gider. Tüm bu zorluklarına rağmen, kişisel olarak en çok zevk aldığım uygulamalar, genelde OCR uygulamaları olagelmiştir.

Bu makalede, baştan sonra bir OCR uygulamasını, temel bileşenleri ile açıklamak istiyorum. Yeni başlayanlar için, -başlıkta belirtildiği gibi- “temel” ya da başlangıç olabilmesi açısından…

OCR uygulamasının anatomisi

Elimizde üzerinde yazılan karakterleri okuyacağımız bir resim var diyelim. İlk düşünmemiz gereken şey, HALCON açık zemin üzerinde koyu karakterler bekler (tıpkı gerçek dünyadaki dokümanlar gibi) eğer elimizdeki resim bunun tersi ise, en kolayından invert_image ile açık-koyu renkleri yer değiştirmeliyiz.

Sonra düşünmemiz gereken, HALCON ile yüklü gelen OCR karakterlerini mi kullanacağız, yoksa kendi karakterlerimizi mi öğreteceğiz? Hazır olanları kullanmak tabii ki en kolayıdır. Hem öğretmeye ihtiyaç olmaz, hem de her tür yükseklik, genişlik için çalışırlar. HALCON standart olarak gayet güzel fontlar ile birlikte gelir, buna rağmen bu fontlar her zaman isteyen sonuçları vermeyebilir. Bazen son derece net olarak görebildiğiniz bir karakter, HALCON tarafından hatalı yorumlanır. Bu gibi ilginç durumlarla sık sık karşılaşıyorsanız, kendi karakter setinizi öğretmenin vakti gelmiş demektir. (Bunu da ayrı bir makalede anlatmayı düşünüyorum)

Son olarak, OCR edip okutacağımız yazının bir kuralını biliyor muyuz? 3 rakam, arkasından 2 digit, sonra XYZ karakterleri geliyor… gibi. Ya da bir checksum içeriyor mu? (barkodlarda olduğu gibi, son karakter, öncekilerin toplamının bir sayıya bölünmesinden kalan vb. gibi) Ya da, okutacağımız yazı, belirli bir listenin üyesi mi? (mesela, türkiyenin bir ili ise, bir yere tüm iller girilir ve lexicon kullanımı ile bu listeden arattırılır) vb. İşimn güzel yanlarından biri, HALCON her bir karakteri hangi kalitede okuduğunu bize söyler. Eğer emin değilsek, yeniden resim alıp, yeniden denetme gibi işlemlere girilebilir. Tabii zamanımız yeterli ise …

(Yakın zamanda, en basitten en detaylıya kadar, bol miktarda özgün örnek uygulama vereceğim, ileride bu sayfayı tekrar ziyaret etmenizi öneririm, şimdilik yeni makalelere geçiyorum)

Posted in Mavis Proje Günlüğü | Tagged , , , , , | Leave a comment

HALCON 10 Eğitimi

Ülkemizin köklü kuruluşlarından Eti bünyesinde yer alan Eti Makine Sanayi A.Ş. Eskişehir tesislerinde, 4 günlük HALCON eğitiminin ilk kısmı başarıyla tamamlandı. Eti Makine A.Ş. teknik personeli, teknolojiye olan yatkınlığı ve teknolojiyi kendi bünyesine dahil etme istekliliği gibi özellikleriyle zaten farklılaşmış (ve bir anlamda zoru seçmiş) bir ekip. Böyle bir ekipten oldukça profesyonel HALCON uygulamaları bekliyoruz. (Mavis olarak bizden sadece eğitim alan ve bir süre sonra bu eğitimleri kendi sektörlerine (Cam, Medikal, Gıda, vb..) başarıyla uygulayan çalışma arkadaşlarımızı ve onların projelerini gördükçe mutlu oluyoruz. Hatta ilerleyen günlerde izin verirlerse projelerini bu blog sayfalarında anlatmayı düşünüyorum. Bir anlamda alınan eğitim ile nerelere vardıklarının bir ifadesi olacaktır)

Eti Makine A.Ş. de verilen Eğitim

İlk Gün :

HALCON Foundation
HDevelop, Thresholding, segmentation, selection, filtering, acquisition, ROI Operations

İkinci Gün :

Matcing, OCR, Measuring

Planlanan Üçüncü ve Dördüncü GÜn Eğitimleri ise

C# ile Baştan sona gerçek bir HALCON Uygulaması,
Giriş Çıkış İşlemleri (Sinyalizasyon)
Ueye kameralar ile Eti Makine A.Ş. Potansiyel Uygulamalar üzerine örnekler (Gelişmiş Matching teknikleri ile hatalı paket/ürün ayıklama)

 

Posted in Mavis Proje Günlüğü | Tagged , , , | Leave a comment

Mavis Dijital IO Kullanımı

Tetik sinyalinin alınması ve kuru kontak vermek suretiyle çıkış sinyali üretilmesi için Mavis dijital IO, pratik bir kullanım sunmaktadır.

USB kablosu ile bilgisayara bağlanan modül, beslemesini buradan alır. Başka bir besleme kaynağına ihtiyaç duymaz. Girişe uygulanan 5-24 V. arası sinyali bilgisayara aktarır.

Modülün Visual Studio C# içinden kullanımı için aşağıdaki 2 örnek yeterlidir.

Başlangıç Örneği : DIO_Simple.rar

Gelişmiş Örnek : MDI_IO.rar

Gelişmiş Örneğin ekran görüntüsü

 

Posted in Mavis Proje Günlüğü | Leave a comment

Akıllı Şekil Tamamlama

Bazen alınan görüntüde eksik kalan yerlerin tamamlanması gerekebilir. Aşağıdaki örnek kod, tamamlama işini akıllı bir biçimde yapmaktadır.

Yukarıda görüldüğü gibi parçalar arasındaki boşluk, olabildiğince gerçeğe yakın bir şekilde birleştirilmiştir. Birçok yerde kullanılabilecek olan, prosedürel olarak yazılmış HALCON kodu :

read_image (Image, 'C:/Users/Mustafa/Desktop/aa.png')
bin_threshold (Image, Region)
connection (Region, ConnectedRegions)
CombineSplittedRegions (ConnectedRegions, RegionCount)
dev_set_draw ('fill')
dev_display(Image)
dev_display(RegionCount)

Burada asıl işi yapan CombineSplittedRegions prosedürü ise

count_obj(ConnectedRegions, Number)
if (Number > 1)
    while (Number > 1)
        select_obj (ConnectedRegions, Obj1, 1)
        select_obj (ConnectedRegions, Obj2, 2)
        inner_circle(Obj1, Row, Column, Radius1)
        inner_circle(Obj2, Row, Column, Radius2)
        minR := Radius1
        if (Radius2 < Radius1)
            minR := Radius2
        endif
        distance_rr_min(Obj1, Obj2, MinDistance, Row1, Column1, Row2, Column2)
        gen_region_line (RegionLines, Row1, Column1, Row2, Column2)
        dilation_circle(RegionLines, RegionDilation, minR)
        union2(ConnectedRegions, RegionDilation, RegionUnion)
        union1(RegionUnion, RegionCombine)
        connection(RegionCombine, ConnectedRegions)
        count_obj(ConnectedRegions, Number)
    endwhile
else
    copy_obj(ConnectedRegions, RegionCombine, 1, -1)
endif
inner_circle(RegionCombine, Row, Column, Radius)
rank_region(RegionCombine, RegionCount, Radius, Radius, 50)
return ()

programda kullanılan orijinal resim aşağıdadır. Programı denemek için bunu kullanabilirsiniz.

Posted in HALCON çalışmaları, Mavis Proje Günlüğü | Tagged , , , , , , , | 1 Comment

OCR Öncesi Resmi Döndürme

HALCON ile OCR işlemine başlamadan önce, resmin üzerindeki yazının yatay eksene paralel olacak şekilde döndürülmesi gerekmektedir.

resmi döndürdükten sonra ise,

haline gelecektir. Burada, sadece resmi değil, resimle birlikte Region da döndürmek gerekeceğinden, rotate_image komutu yerine transformation komutları (HomMat2DRotate) kullanmak gerekecektir.

Region ile birlikte döndürme yapan HALCON kodu :

 

read_image (Image, 'C:/Users/Mustafa/Desktop/RenPics/142856.bmp')
*Region bulalım
var_threshold(Image, Region, 460, 240, 0.2, 2, 'light')
closing_circle(Region, RegionClosing, 15)
opening_circle(RegionClosing, RegionOpening, 45)
fill_up(RegionOpening, RegionFillUp)
connection(RegionFillUp, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','inner_radius'], 'and', [700000, 200], [2000000, 280])
*
shape_trans(SelectedRegions, RegionTrans, 'convex')

*Resim ve Region birlikte Rotate Edelim
area_center(RegionTrans, Area, Row, Column)
text_line_orientation (RegionTrans, Image, 180, -0.523599, 0.523599, OrientationAngle)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, -OrientationAngle, Row, Column, HomMat2DRotate)
affine_trans_image (Image, ImageRotate, HomMat2DRotate, 'constant', 'false')
affine_trans_region(RegionTrans, RegionAffineTrans, HomMat2DRotate, 'false')

Programın çalışmasını test etmek için kullanılabilecek 2 adet resmi buradan indirebilirsiniz

Posted in HALCON çalışmaları | Tagged , , , , , , , | Leave a comment