Beaglebone Black Sony Playstation Eye Cam Sorunu

Başlatan Erhan YILMAZ, 12 Temmuz 2014, 21:56:00

Erhan YILMAZ

BBB'de opencv ile uğraşmak için iyi bir kamera alayım dedim. Biraz araştırınca fiyat/performans olarak sony'nin playstationlarda CV için geliştirdiği kamerayı buldum ve aldım. Beaglebone: Video Capture and Image Processing on Embedded Linux using OpenCV Burada ki videoyu izleyerek bir şeyler yaptım. Görüntüyü aldım fakat çözünürlükte sorun yaşıyorum. 320x240 alırken sorun yok fakat 640x480 almaya çalışınca simsiyah bir görüntü elde ediyorum. Kamera 640x480 destekliyor fakat niye görüntü alamıyorum çözemedim. Bir kaç kişininde başına gelmiş araştırdım biraz ama bir çözüm bulamadım. Driver patch diye bir işlemden bahsedilmiş ama oda masa üstü sistemlerde olduğundan BBB'ye uyarlayamadım.

Böyle bir sorun ile karşılaşan oldu mu? BBB üzerinde kamerayı ov534 isimli sürücü ile kullanıyorum. Bu sürücüyü değiştirebilir miyim yada değiştirebilir miyim? Bana sürücü sorunu gibi geliyor.

Firzen

Ben karşılaştım
öncelikle V4L2-ctl ayarlarını doğru yapmanız lazım.

Bende Logitech C920 kullanıyorum (Derek Abininkinden) birde Logitech c110. C110 için kamera ayarlarımı 320*240 ve YUVY formatına getirmem gerekiyor.

Benim diğer asıl problemse fotoğraf çekerken siyah göstermesi halbuki ayarları yaptım kamerada görüntü görüyorum ama resim çekmiyor.
Kararsız...

Erhan YILMAZ

Hocam hepsini yaptım ama sonuç alamadım. Ama programı çalıştırınca ayarların bazen kendi kendine 320x240 döndüğünü fark ettim. Bu arada siz kamerayı kaça aldınız?

Program içinde v4l2 komutu gönderebilirsem belki düzelir diye düşünüyorum ama c++ için uygun kütüphaneyi bulamadım. Python'da os.system() gibi bir metot var. C++'de ondan lazım.

Firzen

Alıntı yapılan: Erhan YILMAZ - 13 Temmuz 2014, 01:09:28
Hocam hepsini yaptım ama sonuç alamadım. Ama programı çalıştırınca ayarların bazen kendi kendine 320x240 döndüğünü fark ettim. Bu arada siz kamerayı kaça aldınız?

Program içinde v4l2 komutu gönderebilirsem belki düzelir diye düşünüyorum ama c++ için uygun kütüphaneyi bulamadım. Python'da os.system() gibi bir metot var. C++'de ondan lazım.

Hocam bende tam tersi python'da denedim ekran yine siyah oldu.
Kamerayı ben ebaydan aldım 120tl olması lazım fiyatının.
Python da os.system() librarysi konusunda biraz daha fikir verebilir misiniz acaba?


http://www.steinm.com/blog/motion-detection-webcam-python-opencv-differential-images/

Bu adreste verilen kodu denedim adam görüntü almış ama benim çektiğim fotolar sadece siyah beyaz olarak görünüyor net anlamadım yani.

C++ yazımı konusunda burada küçük yayın yapar mısınız hocam ben hep python kullanıyorum ve adafruit'un vermiş olduğu kütüphaneden yararlanıyorum.
Kararsız...

Erhan YILMAZ

Hocam os.system() komutu c++'de benzer olarak system() komutu varmış. Program içerisinden kabuk programa komutlar göndermeye yarıyor. Terminale komut gönderiyor yani. Örneğin system.os("cd //") gibi. Onuda denedim ama oda olmadı.

Bende yeni angstrom imaj yükleyip öyle denicektim sd kartım 2gb yetmedi. Bu gün yeni kart alırsam birde öyle deniyeyim. Select timeout problemi var deniliyor ama çözmedim. Yani muhtemelen işlem belirtilen sürede yapılamayınca v4l2 api'si sorun çıkartıyor emin değilim. Ben debug ettim. Aşağıdaki gibi benzer bir kodda denedim capture >> frame; komutunda select timeout hatası alıyorum.

Bende yeni sayılırım C++'a, C'den aşinalığım var diye C++ ile başladım o kadar bir uzmanlığım yok. İlerde olabilir belki bilmiyorum.
Bu videoyu izleyerek öğrendim bende.
Beaglebone: C/C++ Programming Introduction for ARM Embedded Linux Development using Eclipse CDT

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main()
{
    VideoCapture capture(0);
    capture.set(CV_CAP_PROP_FRAME_WIDTH,1920);
    capture.set(CV_CAP_PROP_FRAME_HEIGHT,1080);
    if(!capture.isOpened()){
	    cout << "Failed to connect to the camera." << endl;
    }
    Mat frame, edges;
    capture >> frame;
    if(frame.empty()){
		cout << "Failed to capture an image" << endl;
		return -1;
    }
    cvtColor(frame, edges, CV_BGR2GRAY);
    Canny(edges, edges, 0, 30, 3);
    imwrite("edges.png", edges);
    imwrite("capture.png", frame);
    return 0;
}

Firzen

#5
Hocam ben angstrom ile denemeye çok çalıştım çok problem çıkardı bana güncelleme vs...

Ubuntu Precise sürümünü indirip kurdum çok fazla desteği ve kütüphanesi var. Problemde çıkarmıyor çok şükür.

http://www.armhf.com/index.php/download

İsterseniz buradaki adresten indirebilirsiniz.

Dipnot: Hocam en az 8GB microSD kullanının ben 16GB kullanıyorum sistem rahat etti.

Bunun yanı sıra image dosyaları ya 2GB yada 4GB sisteme göre ayarlı.

Bunun içinse " http://www.gigamegablog.com/2012/09/26/beaglebone-101-linux-tricks-for-backing-up-and-resizing-your-microsd-card/ " adresinden " Resizing a 4G Image on an 8G Card " bölümdeki adımları sırası ile izlerseniz sistemde kapalı olan boş alanları da format atmadan yeniden düzenlemiş olursunuz.

mesaj birleştirme:: 13 Temmuz 2014, 17:41:42

Alıntı yapılan: Erhan YILMAZ - 13 Temmuz 2014, 12:53:24
Hocam os.system() komutu c++'de benzer olarak system() komutu varmış. Program içerisinden kabuk programa komutlar göndermeye yarıyor. Terminale komut gönderiyor yani. Örneğin system.os("cd //") gibi. Onuda denedim ama oda olmadı.

Bende yeni angstrom imaj yükleyip öyle denicektim sd kartım 2gb yetmedi. Bu gün yeni kart alırsam birde öyle deniyeyim. Select timeout problemi var deniliyor ama çözmedim. Yani muhtemelen işlem belirtilen sürede yapılamayınca v4l2 api'si sorun çıkartıyor emin değilim. Ben debug ettim. Aşağıdaki gibi benzer bir kodda denedim capture >> frame; komutunda select timeout hatası alıyorum.

Bende yeni sayılırım C++'a, C'den aşinalığım var diye C++ ile başladım o kadar bir uzmanlığım yok. İlerde olabilir belki bilmiyorum.
Bu videoyu izleyerek öğrendim bende.
Beaglebone: C/C++ Programming Introduction for ARM Embedded Linux Development using Eclipse CDT

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main()
{
    VideoCapture capture(0);
    capture.set(CV_CAP_PROP_FRAME_WIDTH,1920);
    capture.set(CV_CAP_PROP_FRAME_HEIGHT,1080);
    if(!capture.isOpened()){
	    cout << "Failed to connect to the camera." << endl;
    }
    Mat frame, edges;
    capture >> frame;
    if(frame.empty()){
		cout << "Failed to capture an image" << endl;
		return -1;
    }
    cvtColor(frame, edges, CV_BGR2GRAY);
    Canny(edges, edges, 0, 30, 3);
    imwrite("edges.png", edges);
    imwrite("capture.png", frame);
    return 0;
}



Alt alta sürekli select time out hatası pythonda da yazarken veriyor. İnternette çok araştırdım bulamadım.
Kamera bağlantısı olmadan sadece bir resim üzerinde görüntü işleme deneyip resmi kaydetmeme izin verdi ama.

ubuntu da kameranın ayarlarını doğru öğrenmek ve anlamak için bir gui programı kurdum xming yüklü olması şart tabi kendi laptopumuzda.

" sudo apt-get install guvcview " bununla kamera sistemini görebiliyordum.
Kararsız...

Erhan YILMAZ

Bu dağıtımları yeni gördüm hocam bir ara deneyeyim olmadı. Kendi sitesinden angstrom indirdim yine kurdum fakat sonuç alamadım. Aynı sorun devam ediyor. Zaten opencv kütüphanesini eclipse port edemedim. Derlemeleri BBB üzerinde yapıyorum oda canımı sıkıyor. Böyle giderse bırakırım opencv'yi led yakıp söndürürüm. Opencv ile uğraşmak istedikten sonra gider .net ile uğraşırım bu kadar eziyete gerek yok Ramazan Ramazan. :D

Firzen

#7
Alıntı yapılan: Erhan YILMAZ - 14 Temmuz 2014, 01:08:25
Bu dağıtımları yeni gördüm hocam bir ara deneyeyim olmadı. Kendi sitesinden angstrom indirdim yine kurdum fakat sonuç alamadım. Aynı sorun devam ediyor. Zaten opencv kütüphanesini eclipse port edemedim. Derlemeleri BBB üzerinde yapıyorum oda canımı sıkıyor. Böyle giderse bırakırım opencv'yi led yakıp söndürürüm. Opencv ile uğraşmak istedikten sonra gider .net ile uğraşırım bu kadar eziyete gerek yok Ramazan Ramazan. :D

Hocam bir yerde sonuna kadar haklısınız :)
Bende öncesinde derek abi gibi " vi " kullanmayı denedim olmadı. Beya zor yazılıyor :)
Ondan sonra " nano " ile denedim python kodu yazdım. Ardından kamerasız normal bir resim ile görüntü işleme denedim oldu :)

Extra : Bende hala devam ediyorum beaglebone ile hocam inşallah yakında bir ekitap ta ben çıkartacağım en basitinden ( tabi içinde opencv olmayacak en temelinden bahsetmeyi planlıyorum ) bir ara size taslak halini göndermek isterim

Dipnot : Ubuntu dağıtımları ile yaptığım zaman opencv kütüphanesi izin verdi. Eclipse kullanmanıza hiç gerek yok hocam boşuna zahmet ediyorsunuz kendinize. Bunun yerine normal bir şekilde kendi bilgisayarınızda kodu yazın. WinSCP veya filezilla ile SSH portundan bağlanıp içine atın. Ondan sonra orda GTK++ haline veya chmod +haline getirebilirsiniz. Derek Molloy kendi bilgisayarında neden bu kadar linux ile kastırmış anlamadım hiçte gerek yok aslında.

WinSCP                                      : http://winscp.net/eng/download.php
PYTHON-Opencv                         : sudo apt-get install python-opencv
Python OpenCV hakkında kitap : http://it-ebooks.info/book/2866/
Kararsız...

Erhan YILMAZ

Bende vi'den nefret ettim bereket nano varmış. :)
Görmek isterim hocam, Kitap dediğiniz baskı halinde mi yoksa pdf şeklinde mi nasıl olacak?

Aslında ben beaglebord.org'ta olmayan dağıtımları yükleme taraftarı değilim o yüzden biraz diretiyorum. Debianı kurdum onda led yakıp söndürmede bile kütüphane hatası verdi. Şimdilik angstrom ile devam ediyorum. Aslında tft cape alıp qt ile görsel bir şeyler yapmayı planlıyordum ama işler biraz yavaş yürüyor. Şimdi arkadaştan başka bir kamera aldım birde onla deneyeceğim. Derek çatır çatır yapıyor biz niye yapamıyoruz anlamadım. En sonunda videolardan şüphelenmeye başladım. :) Sonradan aklıma geldi belki BBB'nin cpu hızı düşük set edilmiştir yada bir ayarı açık değildir bilmiyorum bunu bir araştıracağım.

Ben zaten eclipse üzerinde ssh remote ile bağlandığım için opencv uygulama kodlarını eclipse yada masa üstünde yazıp derleme işlemini BBB'ye yaptırıyorum. Tabi bu haliyle hem derleme zaman alıyor hemde ne debug var ne linker çok ilkel kalıyor. Normal uygulamalarda ise videolarda anlatıldığı gibi gdb ile uzaktan debug yapıyorum ama bunun içinde kodun eclipse üzerinde çapraz derleyici ile derlenip BBB'ye kopyalanması gerek. Adam akıllı bir geliştirme ortamı bulana kadar şimdilik böyle idare ediyorum.

C++ üzerinde biraz ısrarcıyım hocam şimdilik onunla devam edeceğim. Yoksa aynı videolarda java örnekleri de var onda ne çapraz derleme gerekli nede başka birşey. Kur eclipse'i derle geç git. Sadece BBB'ye jre yüklenmesi gerek oda basit.

Sonuç olarak C++ ile adam akıllı tam teçhizatlı geliştirme yapabileceğim ortam lazım hocam eclipse olur başka bişey olur fark etmiyor yeter ki olsun hatta birkaç dolarda ödeyebilirim belki bunu için. :D

Opencv çok önemli değil şimdilik eclipse ile uğraşıyorum bakalım birkaç gömülü uygulama yapsam yeter. İyi oluyor hem böyle böyle linux'ta öğrenmiş oluyoruz. :)

Firzen

Hocam pdf şeklinde olacak. Yurt dışındayım size özelden atmak isterim taslağını ama şuanki hali bile 25mb :(

Sitesinde destek veriyor hocam sadece tavsiye ve örnek olarak angstrom olduğu için böyle tavsiye edilen olarak sunuyor.

http://beagleboard.org/getting-started sayfasına bakın orada destekledikleri mevcut ( Derek abi bile bende ubuntuta geçeceğim dedi mail attığımda )

C++ ile ilgili yapınca örneklerinizi görmek isterim hocam bende c++ 'a geçmek istiyorum ama python hep rahatıma geldi :P Birde QT Creator demişsiniz hocam QTCreator Çapraz derleme gerçekten MÜKEMMEL oluyor arkadaşım LCD Cape vardı deneme yaptık birlikte harika bir sonuç aldık. :)
Kararsız...

Erhan YILMAZ

Hocam görsellerin çözünürlüğü yüksek ise boyutu artabiliyor. Pdf haline getirince bi nebze daha küçülür.

Dediğiniz kernellere baktım bu seferde kafam karıştı. :)

Kayda değer bir şey yaparsam sitede yayınlarım muhtemelen. Bu arada bir başka kamera ile deneyince 640x480 görüntü alabildim. Bu taktığım kameranın driveri farklıydı. Sony kamerada hala çözemedim fazla üstünde durmayaı düşünmüyorum. Belki farklı linuxlarda sorun çıkartmaz denemek lazım.

Hocam öyle deyince dahada ilgimi çekti. Ben qt'nin yüklemesi falan uğraştırıyor sanıyordum. En kısa sürede bir tft alıp yapmayı düşünüyorum.

Firzen

E hayırlı olsun o zaman hocam :)
Hocam valla TFTler pahalı ucuz olsa bende alacaktım bir tanem ama beaglebonun x3 x4 katı fiyatında :)
onu alacağıma gider normal bir LCD alır HDMI dan bağlanıp üzerine butonlar ekleyerek panel yaparım daha bir ucuza gelir bana :)

Birde fotoğraf çekme işini yapabildiniz mi hocam? Bende görüntü aldım ama fotoğrafı kaydettiremedim.
Kararsız...

Firzen

Hocam Playstation Eye Cam Problemini buldum size dökümanı gönderiyorum.

https://www.dropbox.com/s/cckb36dclus0kh4/BBB%2030FPS.PDF

Elinizde bulunsun.
Kararsız...

Erhan YILMAZ

Sağolun hocam ama geri verdim o kamerayı yine ps3 eye cam ile uğraşıyordum bıraktım öyle.

Şimdi verdiğiniz dokümana baktım. Öğrencinin biri hazırlamış. 640x480 15 fps'te çalışır demiş. Ben denemeleri 30 fps'te yapıyordum. Birde 15 yapıp deneyeyim olmadı.

Birde anlatılanlar ubuntu için heralde tam incelemedim ne yapmak gerekiyor?

Hocam ben baktıydım 60-70 dolar bir şeydi heralde. Hdmi monitörüm yok birde portable birşeyler olmasını istiyorum para bulunca en kısa sürede almayı düşünüyorum. :)

Firzen

Alıntı yapılan: Erhan YILMAZ - 17 Temmuz 2014, 15:31:53
Sağolun hocam ama geri verdim o kamerayı yine ps3 eye cam ile uğraşıyordum bıraktım öyle.

Şimdi verdiğiniz dokümana baktım. Öğrencinin biri hazırlamış. 640x480 15 fps'te çalışır demiş. Ben denemeleri 30 fps'te yapıyordum. Birde 15 yapıp deneyeyim olmadı.

Birde anlatılanlar ubuntu için heralde tam incelemedim ne yapmak gerekiyor?

Hocam ben baktıydım 60-70 dolar bir şeydi heralde. Hdmi monitörüm yok birde portable birşeyler olmasını istiyorum para bulunca en kısa sürede almayı düşünüyorum. :)

keşke $60 - $70 olsa hocam :) fiyatları göründe anlarsınız :D Robotistanda var.

Bu anlatılan komutlar sanırsam ubuntu olması lazım. Ama kernel değişmediği için angstroma da olur diye düşünüyorum.

Aynı denetim masası gibi V4L2-ctl den ayar çekmemiz lazımmış.
Kararsız...