c++이미지 처리:24 비트 컬러 그림 색상 변환 인 스 턴 스


실례 는 다음 과 같다.

#include<iostream>
#include<Windows.h>
using namespace std;

bool isred(BYTE r,BYTE g,byte b){
	if(r>g&&r>b) return true;
	else return false;
}
void red2green(BYTE& r,BYTE& g,BYTE& b){
	BYTE tmp=r;
	r=g;
	g=tmp;
}

int main(){
	FILE *fpin=fopen("flo.bmp","rb+");
	if(fpin==NULL){
		cout<<"        "<<endl;
		system("pause");
		return 0;
	}
	BITMAPFILEHEADER bitmapfileheader;
	BITMAPINFOHEADER bitmapinfoheader;
	fread(&bitmapfileheader,sizeof(bitmapfileheader),1,fpin);
	fread(&bitmapinfoheader,sizeof(bitmapinfoheader),1,fpin);

	if(bitmapfileheader.bfType!='B'+'M'*256){
		cout<<"  bmp  "<<endl;
		fclose(fpin);
		system("pause");
		return 0;
	}
	if(bitmapinfoheader.biBitCount!=24){
		cout<<"  24 bmp"<<endl;
		fclose(fpin);
		system("pause");
		return 0;
	}


	//  fpout
	FILE *fpout=fopen("output.bmp","wb+");

	//BITMAPFILEHEADER bitmapfileheader2;
	//BITMAPINFOHEADER bitmapinfoheader2;
	//bitmapfileheader2=bitmapfileheader;
	//bitmapinfoheader2=bitmapinfoheader;
	fwrite(&bitmapfileheader,sizeof(bitmapfileheader),1,fpout);
	fwrite(&bitmapinfoheader,sizeof(bitmapinfoheader),1,fpout);



	if(bitmapinfoheader.biClrUsed!=0){
		cout<<"    "<<endl;
		system("pause");
		return 0;
	}
	if(bitmapinfoheader.biBitCount==24){
		cout<<"24    "<<endl;
		//int line_width=((bitmapinfoheader.biWidth*bitmapinfoheader.biBitCount+24)/32)*4;
		int line_width=bitmapinfoheader.biWidth*3;
		BYTE *line_buf=new BYTE[line_width];
		for(int i=0;i<bitmapinfoheader.biHeight;i++){
			fread(line_buf,line_width,1,fpin);			
			for(int j=0;j<bitmapinfoheader.biWidth;j++){
				BYTE b=line_buf[3*j];
				BYTE g=line_buf[3*j+1];
				BYTE r=line_buf[3*j+2];
				if(isred(r,g,b)){
					red2green(line_buf[3*j+2],line_buf[3*j+1],line_buf[3*j]);
				}
			}	
			fwrite(line_buf,line_width,1,fpout);
		}
		fclose(fpin);
		fclose(fpout);
		delete []line_buf;
		cout<<"     "<<endl;
	}
	
	system("pause");
	return 0;
}
이상 의 c++이미지 처리:24 비트 컬러 그림 색상 변환 인 스 턴 스 는 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기