PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/04/14 08:05:56
Name renoir
Subject C++ 로 이미지파일을 읽는 소스입니다. 틀린것좀 도와주세요ㅠ
안녕하세요.며칠전에 질문글 올렸었는데 자꾸 에러가 나서 미치겠네요 ㅠ
쉬운문제일 텐데 도저히 모르는 에러가 나서 질문드립니다

제가 짜려는 소스는 세로 360, 가로 496의 rgb로 된 raw이미지 파일을 읽어들여 그레이스케일 후 다른이름으로 저장하는 것입니다
rgb를 그레이로 바꾸는 공식은 gray=r*0.3+g*0.59+b*0.11; 를 사용하였구요
자꾸 overflow가 발생한다고 나와서 왜 그런지 모르겠네요..버전은 비쥬얼 2010으로 만들었습니다
도와주세요  피지알~

#include<iostream>
void main()
{
        
        unsigned char **image[3];
        int i,j;
        float r,g,b;                //이미지의 r,g,b값
        float gray;                        //바꿀 그레이값
        int height=360;                //이미지 세로
        int width=496;                //이미지 가로

        FILE *infile = fopen("C:/1/HW1_flowers.raw", "rb");                //파일 열기

if(infile==NULL) {printf("File open error !!"); return;}
fread(image, sizeof(char), 360*496, infile);                                //이미지 읽기
fclose(infile);

//그레이스케일 시작
        for(j=0;j<height;j++)
        {
                for(i=0;i<width;i++)
                {
                        r=(float)image[0][j][i] / 255.0;
                        g=(float)image[1][j][i] / 255.0;
                        b=(float)image[2][j][i] / 255.0;

                        gray=r*0.3+g*0.59+b*0.11;

                        image[0][j][i]=(unsigned char)(gray * 255.0);
                        image[1][j][i]=(unsigned char)(gray * 255.0);
                        image[2][j][i]=(unsigned char)(gray * 255.0);
                }
        }

//그레이스케일 후에 다른이름으로 저장
FILE *outfile;
outfile = fopen("C:/1/r.raw", "rb");
fwrite(image, sizeof(char), 360*496*3, outfile);  
fclose(outfile);
}

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
Humaneer
11/04/14 08:15
수정 아이콘
코드상에 문제가 많아 보입니다.

일단 동적할당 없이 image라는 포인터변수가 가리키는 곳에 값들을 저장하고 있네요.

struct rgb
char r, char g, char b, char reserved
;

struct rgb image[360][496];

이렇게 하는게 코드도 명확해 보일 것 같습니다만...
얄다바오트
11/04/14 08:16
수정 아이콘
포인터만 있고 allocation이 안 되어 있습니다.
11/04/14 08:25
수정 아이콘
두분 답변 감사드립니다. 소스보면 아시겠지만 제 C++수준이 정말 엉망이라 여기 올리기도 챙피하네요 ㅠ
말씀해주신 포인터 부분 외에 다른 고쳐야 할 부분이 있나요?
싸이유니
11/04/14 09:00
수정 아이콘
이미지의 데이터 크기만큼 포인터를 동적할당 하면될것같군요...

할당후 파일을 읽어드리면 오버플러우가 안날것같습니다..
얄다바오트
11/04/14 13:44
수정 아이콘
파일을 쓰기 위해 열 때, 모드가 "rb"가 아닐 것 같습니다. fwrite 부분 역시 C/C++에서 메모리 관리가 어떻게 되고 있는지 신경을 쓰지 않으셔서 생기는 똑같은 오류로 보여요. C/C++에서 물리적(?)인 메모리(의 추상인 virtual address space)가 어떻게 관리되는지 이해하시고, 포인터를 잠깐 살펴 보신 뒤에 진행을 하시는 게 좋지 않을까요?
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
102894 경제 관련 질문입니다. [12] 밴더1871 11/04/14 1871
102893 안드로이드폰 라이브 바탕화면 만드는 툴 없나요? [4] 다음세기1733 11/04/14 1733
102892 경찰서를 가는게 나을까요? 법원을 가는게 나을까요? [5] 대통령2075 11/04/14 2075
102891 왕자의난에 대한 질문.. [4] 진리는나의빛2106 11/04/14 2106
102890 연인 사이끼리 '핸드폰' 확인하시나요? [31] 고등어3마리9854 11/04/14 9854
102889 마구갑이 어떻게 나온 별명이죠? [2] 최강라이온즈2488 11/04/14 2488
102886 경제학 문장하나 질문드립니다 ㅜㅜ [6] GoThree1871 11/04/14 1871
102885 소개팅녀의 생일.... [16] 프로옵저버 黑�2621 11/04/14 2621
102883 영어공부 질문이요~이제 영어의 의문이 풀렸다 책관련 푸바(푸른바람)1779 11/04/14 1779
102882 무역실무 시험공부 중인데 질문드립니다. [1] worcs1909 11/04/14 1909
102881 집중력을 높힐수 있는 방법이 뭐가 있을까요? [5] 유고런1926 11/04/14 1926
102880 밝고 서정적인 노래 추천해 주세요 [18] possible4718 11/04/14 4718
102879 새마을금고 채용관련 질문 드립니다.. 현상2173 11/04/14 2173
102878 컴퓨터 하드교체요~ [3] 에휴존슨이무슨죄1897 11/04/14 1897
102877 살가죽 질문 입니다. [7] 에버츠포드1685 11/04/14 1685
102876 C++ 로 이미지파일을 읽는 소스입니다. 틀린것좀 도와주세요ㅠ [5] renoir6283 11/04/14 6283
102875 이번 프로리그 올스타전 사람 얼마나 올까요? 이신애1613 11/04/14 1613
102873 재무관리(?) 관련 질문입니다ㅠㅠ [4] 키안1834 11/04/14 1834
102872 옴니아는 왜 이렇게 욕을 먹나요? [12] 자신있게2819 11/04/14 2819
102871 영작 좀 부탁해도 될까요.. [9] 가치파괴자1859 11/04/14 1859
102870 브로드밴드 5년 명의를 받을 예정입니다. 온가족 합류 질문이예요. [2] juckmania2133 11/04/14 2133
102869 갤럭시탭에 대해서 문의드립니다 [3] 케이윌2115 11/04/14 2115
102867 네비게이션이 자꾸 떨어집니다. [3] 스터너2528 11/04/14 2528
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로