jpeg관련 질문입니다~~~~고수님들 도와주세요 ㅜ
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define Width 240
#define Height 320
#define SIZE 76800
#define CH_SZ 256
void usrsignal(int);
int jpeg_capture(char *);
pid_t id;
static int dev;
unsigned short RGB[SIZE];
unsigned int *pSRAM;
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
static long cnt;
char buf[CH_SZ];
char path[CH_SZ] = {'\0'};
char *str1 = "/web/mjpg/img";
char *str2 = ".jpg";
int main(void){
dev= open("/dev/camera",O_RDWR);
if(dev < 0){
printf("application : camera driver open fails!\n");
return -1;
}
(void)signal(SIGUSR2,usrsignal);
id = getpid();
write(dev, &id, 4);
usleep(85000);
close(dev);
return 0;
}
void usrsignal(int isg){
read(dev,RGB, SIZE * 2);
strcat(path, str1);
sprintf(buf, "%id", cnt++);
strcat(path, buf);
strcat(path, str2);
if(cnt == 50) cnt = 0;
jpeg_capture(path);
}
int jpeg_capture(char *filename){
FILE *imgout;
int i,j,n,cnt,row_stride;
JSAMPROW row_pointer[1];
unsigned char image_buffer[SIZE * 3];
if(!(imgout = fopen(filename, "wb"))){
fprintf(stderr, "File Open Error\n");
exit(1);
}
n = cnt = 0;
for(i = 0 ; i < Height ; i++){
for(j = Width ; j > 0 ; j--){
image_buffer[n++] = (((RGB[cnt] & 0xf800) >> 11) << 3);
image_buffer[n++] = (((RGB[cnt] & 0x07e0) >> 15) << 2);
image_buffer[n++] = (((RGB[cnt] & 0x001f) << 3));
}
}
cinfo.err = jpeg_std_error(&jerr);
jpeg_creat_compress(&cinfo);
jpeg_stdio_dest(&cinfo, imgout);
cinfo.image_width = Width;
cinfo.image_height = Height;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_default(&cinfo);
jpeg_start_compress(&cinfo, TRUE);
row_stride = cinfo.image_width * 3;
while(cinfo.next_scanline < cinfo.image_height){
row_pointer[0] = &image_buffer[cinfo.next_scanline * row_stride];
jpeg_write_scanline(&cinfo, row_pointer, 1);
}
jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo);
bzero(path, CH_SZ);
fclose(imgout);
id = getpid();
write(dev,&id,4);
usleep(85000);
return 0;
}
==========================================================================================
==========================================================================================
==========================================================================================
이 소스를 컴파일 했는데 아래와 같은 오류가 나요~~
jpeg라이브러리도 설치를 했는데 이럴경우엔 어떻게 해야하나요 ㅜ
고수님들 해결방법좀 알려주세요~~
참고로 지금 환경은 레드햇9.0이고 타겟보드는 한백전자의 sm보드입니다~
qt카메라를 이용해 영상을 jpeg파일로 저장할려고 시도중인데 너무 힘드네요 ㅜ
디바이스 드라이버파일도 있는데 디바이스 드라이버 파일도 컴파일이 수많은 오류가 납니다ㅜ
파일을 첨부했으니 고수님들이 좀 보시고 도와주세요 ㅜ
/tmp/ccTmRxo8.o: In function `jpeg_capture':
/tmp/ccTmRxo8.o(.text+0x348): undefined reference to `jpeg_std_error'
/tmp/ccTmRxo8.o(.text+0x35c): undefined reference to `jpeg_creat_compress'
/tmp/ccTmRxo8.o(.text+0x368): undefined reference to `jpeg_stdio_dest'
/tmp/ccTmRxo8.o(.text+0x3a0): undefined reference to `jpeg_set_default'
/tmp/ccTmRxo8.o(.text+0x3ac): undefined reference to `jpeg_start_compress'
/tmp/ccTmRxo8.o(.text+0x418): undefined reference to `jpeg_write_scanline'
/tmp/ccTmRxo8.o(.text+0x424): undefined reference to `jpeg_finish_compress'
/tmp/ccTmRxo8.o(.text+0x42c): undefined reference to `jpeg_destroy_compress'
첨부 | 파일 크기 |
---|---|
qtcamera_sm.tar.gz | 15.43 KB |
shared.tar | 8 KB |
링크할 때 -ljpeg
링크할 때 -ljpeg 옵션을 주세요. 추가로 libjpeg.so 가 있는 디렉토리 경로를 -L경로 식으로 붙여주시고
--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
알려주신대로 해봤는데요..
지금 현재 /root 디렉토리 안에 소스가 있고 알려주신대로 이렇게 명령어를 실행했습니다.
arm-linux-gcc -ljpeg -L /usr/local/cross-tools/lib -o run cmos_app.c
그랬더니
/usr/local/cross-tools/lib/libjpeg.so: could not read
symbols: Invalid operation
이렇게 메세지가 나오는데요 분명 이 디렉토리 안에 libjpeg.so 파일이 있는데
어떻게 해야되나요..?
저 에러 메시지가 아니긴한데..
혹시 libjpeg.so 라이브러리는 arm용으로 컴파일 된건가요?
에러메시지로 구글링 했더니
http://www.graphviz.org/bugs/b836.html
http://www.korone.net/bbs/board.php?bo_table=qt_qna&wr_id=11192&page=98
등에 비슷한 문제가 있네요.
링크과정을 면밀히 살펴보시고 정말 원하는 라이브러리가 링크되는지 살펴보시면 어떨까요?
프로그래머 다운 프로그래머가 되고 싶습니다. 많은 지도 편달 부탁드립니다^^
프로그래머 다운 프로그래머가 되고 싶습니다. 많은 지도 편달 부탁드립니다^^
댓글 달기