ov511 카메라를 사용하는데 어떻게 하면 컬러 640 * 480으로 디스플레이 가능 한가요?

falhed의 이미지

QImage _image(640, 480, QImage::Format_RGB32)이고
unsigned char DisplayImage[640][480][3]으로 선언하구요...

len = read(g_camera.dev, g_camera.pic, 640 * 480/4.0*6.0);
하니 length =460800이네요...

memcpy((void *)DisplayImage, (void *)g_camera.pic, IMAGEWIDTH*IMAGEHEIGHT*DEPTH);
dst = _image.bits();

for(int i=0; i for(int j=0; j {
dst[i*IMAGEWIDTH*4 + j*4 + 0 ] = DisplayImage[i][j][0];
dst[i*IMAGEWIDTH*4 + j*4 + 1 ] = DisplayImage[i][j][1];
dst[i*IMAGEWIDTH*4 + j*4 + 2 ] = DisplayImage[i][j][2];
dst[i*IMAGEWIDTH*4 + j*4 + 3 ] = 0;
}
이렇게 디스플레이 하니
제일 영상이 3개로 나눠져 디스플레이 하네요...흠....여기서 어떻게 해야 한 화면에 컬러이미지로 디스플레이 되나요.

falhed의 이미지

QImage _image(320, 240, QImage::Format_RGB32);선언하구요...

len = read (g_camera.dev, g_camera.pic, g_camera.vid_caps.maxwidth * g_cam
era.vid_caps.maxheight*DEPTH);
printf("Image size : %d \n", len); --> 115200이 뜨네요...

if (len <= 0)
fprintf(stderr, "Error reading image...\n");
else
{
fprintf(stderr, "%d\n", len);
fprintf(stderr, "%d\n", g_camera.vid_caps.maxwidth * g_camera.vid_caps.maxheight*DEPTH);

그리고 len은 115200 이고, 밑에는 921600이 뜹니다..

memcpy((void *)DisplayImage, (void *)g_camera.pic, IMAGEWIDTH*IMAGEHEIGHT*DEPTH);
dst = _image.bits();
--> 여기까지는 이상이 없는데요..
for(int i=0; i for(int j=0; j {
dst[i*IMAGEWIDTH*4 + j*4 + 0 ] = DisplayImage[i][j][0];
dst[i*IMAGEWIDTH*4 + j*4 + 1 ] = DisplayImage[i][j][1];
dst[i*IMAGEWIDTH*4 + j*4 + 2 ] = DisplayImage[i][j][2];
dst[i*IMAGEWIDTH*4 + j*4 + 3 ] = 0;
}

repaint();
}
}
for문 안에서 에러가 발생합니다..ㅠㅠㅠ 원인을 계속 찾고 있는데 모르겠어요..
무엇이 문제인가요?

Risty의 이미지

115200란 숫자를 보니 드라이버에서 영상을 YUV420으로 제공하는 것 같군요. 드라이버에서 할당한 영상 버퍼 크기도 그 정도로 되어 있어서, memcpy에서 그것보다 큰 용량을 복사하려다가 세그먼트 오류가 나는 것 같습니다. 일단 드라이버에서 제공하는 영상 형식을 다시 확인하신 후, memcpy 명령에 올바른 영상 크기를 넣으셔야 할 것 같습니다.

혹시 RGB32 형식의 영상이 꼭 필요하시면 먼저 드라이버에서 그런 형식으로 전송하도록 설정을 하시고, 만약 안 된다면(드라이버에 그런 기능이 없을 가능성이 꽤 있습니다) 라이브러리나 인터넷에서 변환 루틴을 검색하셔서 이용하셔야 할 것 같군요.

falhed의 이미지

QImage _image(640, 480, QImage::Format_RGB32)이고  unsigned char DisplayImage[640][480][3]으로 선언하구요...
len = read(g_camera.dev, g_camera.pic, 640 * 480/4.0*6.0);  하니 length =460800이네요...
여기서 memcpy((void *)DisplayImage, (void *)g_camera.pic, IMAGEWIDTH*IMAGEHEIGHT*DEPTH);
dst = _image.bits();
for(int i=0; i<IMAGEHEIGHT; i++)
   for(int j=0; j<IMAGEWIDTH; j++)
   {
	dst[i*IMAGEWIDTH*4 + j*4 + 0 ] = DisplayImage[i][j][0];
	dst[i*IMAGEWIDTH*4 + j*4 + 1 ] = DisplayImage[i][j][1];
	dst[i*IMAGEWIDTH*4 + j*4 + 2 ] = DisplayImage[i][j][2];
	dst[i*IMAGEWIDTH*4 + j*4 + 3 ] = 0;
   }
이렇게 디스플레이 하니
제일 영상이 3개로 나눠져 디스플레이 하네요...흠....여기서 어떻게 해야 한 화면에 컬러이미지로 디스플레이 되나요.
falhed의 이미지

for(int i=0;i<640;i++)
for(int j=0;j<480;j++)
{
dst[i*640 * 4+ j*4 + 0 ] = DisplayImage[i][j][0];
dst[i*640 * 4+ j*4 + 1 ] = DisplayImage[i][j][1];
dst[i*640 * 4+ j*4 + 2 ] = DisplayImage[i][j][2];
dst[i*640 * 4+ j*4 + 3 ] = 0;
}

어떻게 하면 640 *480 컬러 이미지를 디스플레이를 할 수 있나요?

블루스크린의 이미지

-------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요.

-------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요.

poplinux의 이미지

YUV 로 받아 오신 거라면 변환식을 사용해야 raw rgb 를 얻을 수 있을 겁니다.

자세한 내용은

"Video demystified, fourth edition" 을 참조해 보십시요.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.