欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++圖像處理:24位真彩圖顏色變換實例

 更新時間:2017年01月10日 10:42:02   投稿:jingxian  
下面小編就為大家?guī)硪黄猚++圖像處理:24位真彩圖顏色變換實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

實例如下:

#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;
	}


	//設(shè)置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位真彩圖顏色變換實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • VS及Unity安裝和使用Nuget包

    VS及Unity安裝和使用Nuget包

    本文主要介紹了VS及Unity安裝和使用Nuget包,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • VC WinExec打開指定程序或者文件的方法

    VC WinExec打開指定程序或者文件的方法

    使用WinExec命令打開指定程序或者文件的參數(shù)說明
    2008-11-11
  • C/C++實現(xiàn)線性單鏈表的示例代碼

    C/C++實現(xiàn)線性單鏈表的示例代碼

    使用鏈存儲結(jié)構(gòu)的線性存儲結(jié)構(gòu)為線性單鏈表,本文將分別利用C語言和C++實現(xiàn)線性單鏈表,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Qt實現(xiàn)解壓帶有密碼的加密文件

    Qt實現(xiàn)解壓帶有密碼的加密文件

    Quazip是Qt平臺下面的一個壓縮解壓縮庫。本文將利用Quazip實現(xiàn)解壓帶有密碼的加密文件,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-02-02
  • C語言深入講解之從函數(shù)棧幀角度理解return關(guān)鍵字

    C語言深入講解之從函數(shù)棧幀角度理解return關(guān)鍵字

    在C語言中,一般情況下函數(shù)的返回值是通過函數(shù)中的return語句來實現(xiàn)的,每調(diào)用一次return語句只能從函數(shù)中返回一個值,這篇文章主要給大家介紹了關(guān)于C語言從函數(shù)棧幀角度理解return關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 一文帶你學(xué)會C語言中的qsort函數(shù)

    一文帶你學(xué)會C語言中的qsort函數(shù)

    qsort函數(shù)是C語言的庫函數(shù),能實現(xiàn)對各種元素類型的比較,使用的基本思想是快速排序法,頭文件是<stdlib.h>,本文不講解具體實現(xiàn)原理,只對使用方法進行說明,希望對大家有所幫助
    2022-12-12
  • 深入解析C++中類的多重繼承

    深入解析C++中類的多重繼承

    這篇文章主要介紹了深入解析C++中類的多重繼承,包括多重繼承相關(guān)的二義性問題,需要的朋友可以參考下
    2015-09-09
  • C++位操作實戰(zhàn)掩碼、提取與組裝

    C++位操作實戰(zhàn)掩碼、提取與組裝

    在C++編程中,位操作是基礎(chǔ)而強大的技術(shù),允許在二進制級別上操作數(shù)據(jù),對性能優(yōu)化、內(nèi)存節(jié)省和底層硬件控制至關(guān)重要,文章探討了掩碼操作、字節(jié)提取與組裝等技術(shù),并介紹了bitset類模板的使用,幫助處理二進制數(shù)據(jù),通過實例解析如何設(shè)置、清除、檢查特定位
    2024-10-10
  • c++下使用windows api遍歷指定文件夾及其子文件夾中的文件

    c++下使用windows api遍歷指定文件夾及其子文件夾中的文件

    這篇文章主要介紹了c++下使用windows api遍歷指定文件夾及其子文件夾中的文件實現(xiàn)代碼,一般都是通過c++自帶的函數(shù)實現(xiàn)
    2021-07-07
  • 利用C語言編輯畫圖程序的實現(xiàn)方法(推薦)

    利用C語言編輯畫圖程序的實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄肅語言編輯畫圖程序的實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論