<https://lh3.googleusercontent.com/--Em02TZy7Kc/UK1iDMaVIjI/AAAAAAAAAls/dK-paqZrUzk/s1600/device-2012-11-21-172402.png>
I want to make the code crop image on opencv ... and at the moment in
trying in pictures, ...pixels that are in can be broken ...
I want the picture remained the original image

--

Search Discussions

  • Mohamed Gad-elrab at Nov 22, 2012 at 7:23 am
    check the number of colors channels ... I think input is 4 channels not 3


    On Thu, Nov 22, 2012 at 1:22 AM, Putria Febriana
    wrote:



    <https://lh3.googleusercontent.com/--Em02TZy7Kc/UK1iDMaVIjI/AAAAAAAAAls/dK-paqZrUzk/s1600/device-2012-11-21-172402.png>
    I want to make the code crop image on opencv ... and at the moment in
    trying in pictures, ...pixels that are in can be broken ...
    I want the picture remained the original image

    --




    --
    Best Regards,
    *Mohamed Gad-Elrab*

    --
  • Putria Febriana at Nov 22, 2012 at 9:42 am
    i was change the number of channels from IplImage *img2 =
    cvCreateImage(cvGetSize(img1),
    IPL_DEPTH_8U,
    img1->nChannels);
    to
    IplImage *img2 = cvCreateImage(cvGetSize(img1),
    IPL_DEPTH_8U,
    4);
    and my application just get exit without error... please help me


    2012/11/21 Mohamed Gad-elrab <mhmgad@gmail.com>
    check the number of colors channels ... I think input is 4 channels not 3


    On Thu, Nov 22, 2012 at 1:22 AM, Putria Febriana <putriafebriana@gmail.com
    wrote:



    <https://lh3.googleusercontent.com/--Em02TZy7Kc/UK1iDMaVIjI/AAAAAAAAAls/dK-paqZrUzk/s1600/device-2012-11-21-172402.png>
    I want to make the code crop image on opencv ... and at the moment in
    trying in pictures, ...pixels that are in can be broken ...
    I want the picture remained the original image

    --




    --
    Best Regards,
    *Mohamed Gad-Elrab*


    --




    --
    hari ini adalah milik anda?
    aku hanya akan hidup untuk hari ini

    --
  • Andrey Pavlenko at Nov 22, 2012 at 10:03 am
    I'd suggest you post your code here...

    --
  • Putria Febriana at Nov 22, 2012 at 12:04 pm
    JNIEXPORT jbooleanArray JNICALL
    Java_com_open_houghCircle_houghCircle_getSourceImage(
    JNIEnv* env, jobject thiz) {

    if (pImage == NULL) {
    LOGE("No source image.");
    return 0;
    }
    cvFlip(pImage);

    IplImage* img1=pImage;
    //pemprosesan
    IplImage* pWorkImage = cvCreateImage(cvGetSize(img1), 8, 1);
    IplImage* sx= cvCreateImage( cvGetSize(img1), IPL_DEPTH_16S, 1 );
    cvCvtColor(img1, pWorkImage, CV_BGR2GRAY);
    CvMemStorage* storage = cvCreateMemStorage(0);
    /*
    cvSobel(pWorkImage, pWorkImage, 1, 0, 3);*/
    cvCanny( pWorkImage, pWorkImage, 50, 200, 3 );
    cvSmooth(pWorkImage, pWorkImage, CV_GAUSSIAN, 9,9);
    cvSobel(pWorkImage, sx, 1, 0, 3);
    //harus ada cvCanny dan cvSobel

    // CvSeq* imageKeypoints = cvHoughCircles(pWorkImage, storage,
    CV_HOUGH_GRADIENT, 2, 100.0, 30, 150,100,140);
    //asli
    //cvHoughCircles(pWorkImage, storage,CV_HOUGH_GRADIENT, 2,
    pWorkImage->height/4, 200, 100);
    CvSeq* imageKeypoints =cvHoughCircles(pWorkImage,
    storage,CV_HOUGH_GRADIENT, 2, pWorkImage->height/4, 200, 100);
    CvSeq* iris = cvHoughCircles(pWorkImage, storage,
    CV_HOUGH_GRADIENT, 2, pWorkImage->height, 200, 100);



    for( int i = 0; i < imageKeypoints->total; i++ )
    {
    CvPoint center;
    float* p = (float*)cvGetSeqElem(imageKeypoints, i);
    center.x =cvRound(p[0]);
    center.y =cvRound(p[1]);
    int radius = cvRound(p[2]);
    /* cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),3, CV_RGB(0,255,0), -1, 8, 0 );
    cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),cvRound(p[2]), CV_RGB(255,0,0), 3, 8,
    0 );
    cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),2.5*cvRound(p[2]), CV_RGB(0,0,255), 3,
    8, 0 );
    */
    cvSetImageROI(img1,
    cvRect(cvRound(p[0]),cvRound(p[1]), 2*(2.5*cvRound(p[2])),
    2*(2.5*cvRound(p[2]))));


    }
    /*//x,y,lebar,panjang
    //this is for ROI....iwant detect ROI for iriss
    cvCircle( img1, cvPoint(170,170),100, CV_RGB(0,255,0), -1, 8, 0 );
    cvSetImageROI(img1, cvRect(70,70, 200, 200));*/


    /* create destination image
    Note that cvGetSize will return the width and the height of ROI */
    IplImage *img2 = cvCreateImage(cvGetSize(img1),
    IPL_DEPTH_8U,
    img1->nChannels);

    /* copy subimage */
    cvCopy(img1, img2, NULL);
    // cvNormalize(img2, img2, 0, 255, CV_MINMAX);

    /* always reset the Region of Interest */
    cvResetImageROI(img1);
    int width = img2->width;
    int height = img2->height;
    int rowStep = img2->widthStep;
    int headerSize = 54;
    int imageSize = rowStep * height;
    int fileSize = headerSize + imageSize;
    unsigned char* image = new unsigned char[fileSize];
    struct bmpfile_header* fileHeader = (struct bmpfile_header*) (image);
    fileHeader->magic[0] = 'B';
    fileHeader->magic[1] = 'M';
    fileHeader->filesz = fileSize;
    fileHeader->creator1 = 0;
    fileHeader->creator2 = 0;
    fileHeader->bmp_offset = 54;
    struct bmp_dib_v3_header_t* imageHeader =
    (struct bmp_dib_v3_header_t*) (image + 14);
    imageHeader->header_sz = 40;
    imageHeader->width = width;
    imageHeader->height = height;
    imageHeader->nplanes = 1;
    imageHeader->bitspp = 24;
    imageHeader->compress_type = 0;
    imageHeader->bmp_bytesz = imageSize;
    imageHeader->hres = 0;
    imageHeader->vres = 0;
    imageHeader->ncolors = 0;
    imageHeader->nimpcolors = 0;
    memcpy(image + 54, pImage->imageData, imageSize);
    jbooleanArray bytes = env->NewBooleanArray(fileSize);
    if (bytes == 0) {
    LOGE("Error in creating the image.");
    delete[] image;
    return 0;
    }
    env->SetBooleanArrayRegion(bytes, 0, fileSize, (jboolean*) image);
    delete[] image;
    return bytes;
    }

    2012/11/22 Andrey Pavlenko <andrey.pavlenko@itseez.com>
    I'd suggest you post your code here...

    --




    --
    hari ini adalah milik anda?
    aku hanya akan hidup untuk hari ini

    --
  • Mohamed Gad-elrab at Nov 23, 2012 at 8:02 am
    from where u get IplImage* img1=*pImage*; the pImage are getting input
    from camera or loading it from image ?


    On Thu, Nov 22, 2012 at 2:04 PM, Putria Febriana
    wrote:
    JNIEXPORT jbooleanArray JNICALL
    Java_com_open_houghCircle_houghCircle_getSourceImage(
    JNIEnv* env, jobject thiz) {

    if (pImage == NULL) {
    LOGE("No source image.");
    return 0;
    }
    cvFlip(pImage);

    IplImage* img1=pImage;
    //pemprosesan
    IplImage* pWorkImage = cvCreateImage(cvGetSize(img1), 8, 1);
    IplImage* sx= cvCreateImage( cvGetSize(img1), IPL_DEPTH_16S, 1 );
    cvCvtColor(img1, pWorkImage, CV_BGR2GRAY);
    CvMemStorage* storage = cvCreateMemStorage(0);
    /*
    cvSobel(pWorkImage, pWorkImage, 1, 0, 3);*/
    cvCanny( pWorkImage, pWorkImage, 50, 200, 3 );
    cvSmooth(pWorkImage, pWorkImage, CV_GAUSSIAN, 9,9);
    cvSobel(pWorkImage, sx, 1, 0, 3);
    //harus ada cvCanny dan cvSobel

    // CvSeq* imageKeypoints = cvHoughCircles(pWorkImage, storage,
    CV_HOUGH_GRADIENT, 2, 100.0, 30, 150,100,140);
    //asli
    //cvHoughCircles(pWorkImage, storage,CV_HOUGH_GRADIENT, 2,
    pWorkImage->height/4, 200, 100);
    CvSeq* imageKeypoints =cvHoughCircles(pWorkImage,
    storage,CV_HOUGH_GRADIENT, 2, pWorkImage->height/4, 200, 100);
    CvSeq* iris = cvHoughCircles(pWorkImage, storage,
    CV_HOUGH_GRADIENT, 2, pWorkImage->height, 200, 100);



    for( int i = 0; i < imageKeypoints->total; i++ )
    {
    CvPoint center;
    float* p = (float*)cvGetSeqElem(imageKeypoints, i);
    center.x =cvRound(p[0]);
    center.y =cvRound(p[1]);
    int radius = cvRound(p[2]);
    /* cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),3, CV_RGB(0,255,0), -1, 8, 0 );
    cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),cvRound(p[2]), CV_RGB(255,0,0), 3, 8,
    0 );
    cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),2.5*cvRound(p[2]), CV_RGB(0,0,255), 3,
    8, 0 );
    */
    cvSetImageROI(img1,
    cvRect(cvRound(p[0]),cvRound(p[1]), 2*(2.5*cvRound(p[2])),
    2*(2.5*cvRound(p[2]))));


    }
    /*//x,y,lebar,panjang
    //this is for ROI....iwant detect ROI for iriss
    cvCircle( img1, cvPoint(170,170),100, CV_RGB(0,255,0), -1, 8, 0 );
    cvSetImageROI(img1, cvRect(70,70, 200, 200));*/


    /* create destination image
    Note that cvGetSize will return the width and the height of ROI */

    IplImage *img2 = cvCreateImage(cvGetSize(img1),
    IPL_DEPTH_8U,
    img1->nChannels);

    /* copy subimage */
    cvCopy(img1, img2, NULL);
    // cvNormalize(img2, img2, 0, 255, CV_MINMAX);

    /* always reset the Region of Interest */
    cvResetImageROI(img1);
    int width = img2->width;
    int height = img2->height;
    int rowStep = img2->widthStep;
    int headerSize = 54;
    int imageSize = rowStep * height;
    int fileSize = headerSize + imageSize;
    unsigned char* image = new unsigned char[fileSize];
    struct bmpfile_header* fileHeader = (struct bmpfile_header*) (image);
    fileHeader->magic[0] = 'B';
    fileHeader->magic[1] = 'M';
    fileHeader->filesz = fileSize;
    fileHeader->creator1 = 0;
    fileHeader->creator2 = 0;
    fileHeader->bmp_offset = 54;
    struct bmp_dib_v3_header_t* imageHeader =
    (struct bmp_dib_v3_header_t*) (image + 14);
    imageHeader->header_sz = 40;
    imageHeader->width = width;
    imageHeader->height = height;
    imageHeader->nplanes = 1;
    imageHeader->bitspp = 24;
    imageHeader->compress_type = 0;
    imageHeader->bmp_bytesz = imageSize;
    imageHeader->hres = 0;
    imageHeader->vres = 0;
    imageHeader->ncolors = 0;
    imageHeader->nimpcolors = 0;
    memcpy(image + 54, pImage->imageData, imageSize);
    jbooleanArray bytes = env->NewBooleanArray(fileSize);
    if (bytes == 0) {
    LOGE("Error in creating the image.");
    delete[] image;
    return 0;
    }
    env->SetBooleanArrayRegion(bytes, 0, fileSize, (jboolean*) image);
    delete[] image;
    return bytes;

    }

    2012/11/22 Andrey Pavlenko <andrey.pavlenko@itseez.com>
    I'd suggest you post your code here...

    --




    --
    hari ini adalah milik anda?
    aku hanya akan hidup untuk hari ini


    --




    --
    Best Regards,
    *Mohamed Gad-Elrab*

    --
  • Putria Febriana at Nov 23, 2012 at 10:25 am
    yeah i get it from the camera...

    2012/11/22 Mohamed Gad-elrab <mhmgad@gmail.com>
    from where u get IplImage* img1=*pImage*; the pImage are getting
    input from camera or loading it from image ?


    On Thu, Nov 22, 2012 at 2:04 PM, Putria Febriana <putriafebriana@gmail.com
    wrote:
    JNIEXPORT jbooleanArray JNICALL
    Java_com_open_houghCircle_houghCircle_getSourceImage(
    JNIEnv* env, jobject thiz) {

    if (pImage == NULL) {
    LOGE("No source image.");
    return 0;
    }
    cvFlip(pImage);

    IplImage* img1=pImage;
    //pemprosesan
    IplImage* pWorkImage = cvCreateImage(cvGetSize(img1), 8, 1);
    IplImage* sx= cvCreateImage( cvGetSize(img1), IPL_DEPTH_16S, 1 );
    cvCvtColor(img1, pWorkImage, CV_BGR2GRAY);
    CvMemStorage* storage = cvCreateMemStorage(0);
    /*
    cvSobel(pWorkImage, pWorkImage, 1, 0, 3);*/
    cvCanny( pWorkImage, pWorkImage, 50, 200, 3 );
    cvSmooth(pWorkImage, pWorkImage, CV_GAUSSIAN, 9,9);
    cvSobel(pWorkImage, sx, 1, 0, 3);
    //harus ada cvCanny dan cvSobel

    // CvSeq* imageKeypoints = cvHoughCircles(pWorkImage, storage,
    CV_HOUGH_GRADIENT, 2, 100.0, 30, 150,100,140);
    //asli
    //cvHoughCircles(pWorkImage, storage,CV_HOUGH_GRADIENT, 2,
    pWorkImage->height/4, 200, 100);
    CvSeq* imageKeypoints =cvHoughCircles(pWorkImage,
    storage,CV_HOUGH_GRADIENT, 2, pWorkImage->height/4, 200, 100);
    CvSeq* iris = cvHoughCircles(pWorkImage, storage,
    CV_HOUGH_GRADIENT, 2, pWorkImage->height, 200, 100);



    for( int i = 0; i < imageKeypoints->total; i++ )
    {
    CvPoint center;
    float* p = (float*)cvGetSeqElem(imageKeypoints, i);
    center.x =cvRound(p[0]);
    center.y =cvRound(p[1]);
    int radius = cvRound(p[2]);
    /* cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),3, CV_RGB(0,255,0), -1, 8, 0 );
    cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),cvRound(p[2]), CV_RGB(255,0,0), 3, 8,
    0 );
    cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),2.5*cvRound(p[2]), CV_RGB(0,0,255), 3,
    8, 0 );
    */
    cvSetImageROI(img1,
    cvRect(cvRound(p[0]),cvRound(p[1]), 2*(2.5*cvRound(p[2])),
    2*(2.5*cvRound(p[2]))));


    }
    /*//x,y,lebar,panjang
    //this is for ROI....iwant detect ROI for iriss
    cvCircle( img1, cvPoint(170,170),100, CV_RGB(0,255,0), -1, 8, 0 );
    cvSetImageROI(img1, cvRect(70,70, 200, 200));*/


    /* create destination image
    Note that cvGetSize will return the width and the height of ROI */

    IplImage *img2 = cvCreateImage(cvGetSize(img1),
    IPL_DEPTH_8U,
    img1->nChannels);

    /* copy subimage */
    cvCopy(img1, img2, NULL);
    // cvNormalize(img2, img2, 0, 255, CV_MINMAX);

    /* always reset the Region of Interest */
    cvResetImageROI(img1);
    int width = img2->width;
    int height = img2->height;
    int rowStep = img2->widthStep;
    int headerSize = 54;
    int imageSize = rowStep * height;
    int fileSize = headerSize + imageSize;
    unsigned char* image = new unsigned char[fileSize];
    struct bmpfile_header* fileHeader = (struct bmpfile_header*) (image);
    fileHeader->magic[0] = 'B';
    fileHeader->magic[1] = 'M';
    fileHeader->filesz = fileSize;
    fileHeader->creator1 = 0;
    fileHeader->creator2 = 0;
    fileHeader->bmp_offset = 54;
    struct bmp_dib_v3_header_t* imageHeader =
    (struct bmp_dib_v3_header_t*) (image + 14);
    imageHeader->header_sz = 40;
    imageHeader->width = width;
    imageHeader->height = height;
    imageHeader->nplanes = 1;
    imageHeader->bitspp = 24;
    imageHeader->compress_type = 0;
    imageHeader->bmp_bytesz = imageSize;
    imageHeader->hres = 0;
    imageHeader->vres = 0;
    imageHeader->ncolors = 0;
    imageHeader->nimpcolors = 0;
    memcpy(image + 54, pImage->imageData, imageSize);
    jbooleanArray bytes = env->NewBooleanArray(fileSize);
    if (bytes == 0) {
    LOGE("Error in creating the image.");
    delete[] image;
    return 0;
    }
    env->SetBooleanArrayRegion(bytes, 0, fileSize, (jboolean*) image);
    delete[] image;
    return bytes;

    }

    2012/11/22 Andrey Pavlenko <andrey.pavlenko@itseez.com>
    I'd suggest you post your code here...

    --




    --
    hari ini adalah milik anda?
    aku hanya akan hidup untuk hari ini


    --




    --
    Best Regards,
    *Mohamed Gad-Elrab*


    --




    --
    hari ini adalah milik anda?
    aku hanya akan hidup untuk hari ini

    --
  • Mohamed Gad-elrab at Nov 23, 2012 at 2:50 pm
    so first u have to convert it from YUV420SP to RGB Or check the image
    encoding and convert to RGB ...


    On Fri, Nov 23, 2012 at 12:24 PM, Putria Febriana
    wrote:
    yeah i get it from the camera...


    2012/11/22 Mohamed Gad-elrab <mhmgad@gmail.com>
    from where u get IplImage* img1=*pImage*; the pImage are getting
    input from camera or loading it from image ?


    On Thu, Nov 22, 2012 at 2:04 PM, Putria Febriana <
    putriafebriana@gmail.com> wrote:
    JNIEXPORT jbooleanArray JNICALL
    Java_com_open_houghCircle_houghCircle_getSourceImage(
    JNIEnv* env, jobject thiz) {

    if (pImage == NULL) {
    LOGE("No source image.");
    return 0;
    }
    cvFlip(pImage);

    IplImage* img1=pImage;
    //pemprosesan
    IplImage* pWorkImage = cvCreateImage(cvGetSize(img1), 8, 1);
    IplImage* sx= cvCreateImage( cvGetSize(img1), IPL_DEPTH_16S, 1
    );
    cvCvtColor(img1, pWorkImage, CV_BGR2GRAY);
    CvMemStorage* storage = cvCreateMemStorage(0);
    /*
    cvSobel(pWorkImage, pWorkImage, 1, 0, 3);*/
    cvCanny( pWorkImage, pWorkImage, 50, 200, 3 );
    cvSmooth(pWorkImage, pWorkImage, CV_GAUSSIAN, 9,9);
    cvSobel(pWorkImage, sx, 1, 0, 3);
    //harus ada cvCanny dan cvSobel

    // CvSeq* imageKeypoints = cvHoughCircles(pWorkImage, storage,
    CV_HOUGH_GRADIENT, 2, 100.0, 30, 150,100,140);
    //asli
    //cvHoughCircles(pWorkImage, storage,CV_HOUGH_GRADIENT, 2,
    pWorkImage->height/4, 200, 100);
    CvSeq* imageKeypoints =cvHoughCircles(pWorkImage,
    storage,CV_HOUGH_GRADIENT, 2, pWorkImage->height/4, 200, 100);
    CvSeq* iris = cvHoughCircles(pWorkImage, storage,
    CV_HOUGH_GRADIENT, 2, pWorkImage->height, 200, 100);



    for( int i = 0; i < imageKeypoints->total; i++ )
    {
    CvPoint center;
    float* p = (float*)cvGetSeqElem(imageKeypoints,
    i);
    center.x =cvRound(p[0]);
    center.y =cvRound(p[1]);
    int radius = cvRound(p[2]);
    /* cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),3, CV_RGB(0,255,0), -1, 8, 0 );
    cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),cvRound(p[2]), CV_RGB(255,0,0), 3, 8,
    0 );
    cvCircle( img1,
    cvPoint(cvRound(p[0]),cvRound(p[1])),2.5*cvRound(p[2]), CV_RGB(0,0,255), 3,
    8, 0 );
    */
    cvSetImageROI(img1,
    cvRect(cvRound(p[0]),cvRound(p[1]), 2*(2.5*cvRound(p[2])),
    2*(2.5*cvRound(p[2]))));


    }
    /*//x,y,lebar,panjang
    //this is for ROI....iwant detect ROI for iriss
    cvCircle( img1, cvPoint(170,170),100, CV_RGB(0,255,0), -1, 8, 0 );
    cvSetImageROI(img1, cvRect(70,70, 200, 200));*/


    /* create destination image
    Note that cvGetSize will return the width and the height of ROI */

    IplImage *img2 = cvCreateImage(cvGetSize(img1),
    IPL_DEPTH_8U,
    img1->nChannels);

    /* copy subimage */
    cvCopy(img1, img2, NULL);
    // cvNormalize(img2, img2, 0, 255, CV_MINMAX);

    /* always reset the Region of Interest */
    cvResetImageROI(img1);
    int width = img2->width;
    int height = img2->height;
    int rowStep = img2->widthStep;
    int headerSize = 54;
    int imageSize = rowStep * height;
    int fileSize = headerSize + imageSize;
    unsigned char* image = new unsigned char[fileSize];
    struct bmpfile_header* fileHeader = (struct bmpfile_header*) (image);
    fileHeader->magic[0] = 'B';
    fileHeader->magic[1] = 'M';
    fileHeader->filesz = fileSize;
    fileHeader->creator1 = 0;
    fileHeader->creator2 = 0;
    fileHeader->bmp_offset = 54;
    struct bmp_dib_v3_header_t* imageHeader =
    (struct bmp_dib_v3_header_t*) (image + 14);
    imageHeader->header_sz = 40;
    imageHeader->width = width;
    imageHeader->height = height;
    imageHeader->nplanes = 1;
    imageHeader->bitspp = 24;
    imageHeader->compress_type = 0;
    imageHeader->bmp_bytesz = imageSize;
    imageHeader->hres = 0;
    imageHeader->vres = 0;
    imageHeader->ncolors = 0;
    imageHeader->nimpcolors = 0;
    memcpy(image + 54, pImage->imageData, imageSize);
    jbooleanArray bytes = env->NewBooleanArray(fileSize);
    if (bytes == 0) {
    LOGE("Error in creating the image.");
    delete[] image;
    return 0;
    }
    env->SetBooleanArrayRegion(bytes, 0, fileSize, (jboolean*) image);
    delete[] image;
    return bytes;

    }

    2012/11/22 Andrey Pavlenko <andrey.pavlenko@itseez.com>
    I'd suggest you post your code here...

    --




    --
    hari ini adalah milik anda?
    aku hanya akan hidup untuk hari ini


    --




    --
    Best Regards,
    *Mohamed Gad-Elrab*


    --




    --
    hari ini adalah milik anda?
    aku hanya akan hidup untuk hari ini


    --




    --
    Best Regards,
    *Mohamed Gad-Elrab*

    --

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupandroid-opencv @
categoriesandroid
postedNov 21, '12 at 11:22p
activeNov 23, '12 at 2:50p
posts8
users3
websiteandroid.com

People

Translate

site design / logo © 2019 Grokbase