C에서 이미지를 읽으면 픽셀을 직접 제어 할 수 있습니다 (MATLAB 에서처럼).C에서 픽셀 단위로 이미지를 조작하는 방법?
FILE *fp;
fp = fopen("C:\\a.tif","r");
단지 나에게 이미지 파일 (내 생각)의 ascii
양식을 제공합니다
어떻게 이미지를 픽셀 단위로 제어 할 수 있으며 이미지 반전과 같은 몇 가지 기본 작업을 수행 할 수 있습니까?
C에서 이미지를 읽으면 픽셀을 직접 제어 할 수 있습니다 (MATLAB 에서처럼).C에서 픽셀 단위로 이미지를 조작하는 방법?
FILE *fp;
fp = fopen("C:\\a.tif","r");
단지 나에게 이미지 파일 (내 생각)의 ascii
양식을 제공합니다
어떻게 이미지를 픽셀 단위로 제어 할 수 있으며 이미지 반전과 같은 몇 가지 기본 작업을 수행 할 수 있습니까?
OpenCV은 컴퓨터 비전 라이브러리 또 다른 좋은 방법입니다,하지만 너무 "낮은 수준"작업에 사용할 수 있습니다. 그것은 BMP, DIB, JPEG, JPG, JPE, PNG, PBM, PGM, PPM, SR, RAS, TIFF, TIF를 지원합니다.
libtiff을 살펴보십시오. 거의 모든 이미지 형식에는 일종의 헤더 데이터가 있으며 파일 형식을 적당하게 유지하기 위해 많은 이미지 형식이 압축됩니다. 헤더를 읽고 압축을 풀 수있는 C 코드를 작성할 수 있지만 다른 누군가가 이미 완료 했으므로 필요 없습니다. 일부 C 이미지 라이브러리의 경우 here을보십시오.
또 다른 질문은 데이터를 조작하려는 형식입니다. 일반적인 선택은 24 비트 RGB입니다 (예 : R, G 및 B는 각각 0에서 255까지 다양 함). MATLAB에서 R, G, B는 0.0에서 1.0까지 두 배로 나타납니다. 또는 다른 색상 공간 (HSV, YUV 등)이 필요할 수 있습니다.
정수 작업이 빠르지 만 더 귀찮은 작업 일 수 있습니다.
+1 OP의 질문에 답할 때도 그렇고 바퀴를 재발 명하지 말 것을 상기시켜야합니다. – JeffH
다른 유형의 이미지를로드하고 libtiff를로드하는 일부 오픈 소스 라이브러리가 tiff 이미지를로드합니다. 그냥 놀고 싶은데 파일 형식이 그다지 중요하지 않으면 netpbm 형식 (특히 P5와 P6)을 살펴볼 것입니다. 로더와 세이버를 작성하는 것은 꽤 쉽습니다. 물론 좋은 운동입니다. ImageMagick과에서
C가 약간 낮은 수준이라고 생각하는 것 같습니다. 그 fopen은 원시 바이너리를 제공하고 있으며 바이너리를 이미지로 해석하는 방법을 알아 내거나 아래에 제안 된대로 라이브러리를 사용합니다. – Breton
@Breton, 그는 이진 내용이 아닌 이러한 파일의 디코딩 방법을 구체적으로 물었습니다. 나는 프로그램이 더 빠를 때 C가 더 좋은 선택이라고 생각한다. 그렇지 않으면 파이썬은 PIL을 충분히 제공한다. – Xolve
@Breton -'fopen()'은 원시 바이너리를 제공하지 않고 텍스트 모드를 제공하기 때문에 Windows에서 일부 파일을 잘못 읽을 가능성이 있습니다. –