『壹』 用C語言怎麼將一張BMP格式的圖片識別並改變顏色
你說用c語言是說直接用c的語法但是不用API嗎? 如果是的話你需要對BMP格式進行剖析 分析BMP的格式,這個我沒有辦法 但是用Windows API的話我可以給點思路你.
LoadBitmap //獲取圖片文件句柄
GetObject //傳入一個BITMAP結構 獲取點陣圖的信息 比如:長寬高
GetBitmapBits//獲取像素點
//對保存像素點緩沖區進行修改
SetBitmapBits //修改像素
『貳』 怎樣用C語言實現圖片的RGB顏色空間向Lab顏色空間的轉化
應該是HTML中的JAVASCRIPT代碼,也可能是其他的用處很多,有時JAVASCRIPT中濾鏡還要用!
顏色代碼有以下幾種表示方法:
HSB色系:利用的是人的視覺而產生的不同影響,用色值H,飽和度S,亮度B表示.
Lab色系,這是一種將自然界中所有顏色的轉化,有些人眼是無法分辨的,這是各色系中色域最廣的一個!用的時候不多.
RGB色系:這個是利用廣告學中的三原色原理,純色系,它認為各種顏色都是由R紅G綠和B藍來以不同比例混合(相加)而成.正如上文中的一個,使用24真彩色時每個最大值是255,最小是0,最後的一個數字,可能是濾鏡要用到的濾色什麼的,不見全部的東西是不知道的!同時還有另一種表示方法:6位16進制值:如FFFFFF一般前還要加個#號,前兩位是紅中間兩位是綠最後兩位是藍.可以與數字相互轉化.最常用的.
CMYK色系:由於廣告中的印刷而產生的一種色系,也是混合,但是是減法色系.三原色是品紅M,黃Y,青C,因為三色最終混合不能得到黑色,所以加入一個K黑色.這個用於印刷設計.色域沒有RGB大.同時還是兩個RGB三原色的混合(理論上),其中三原色都不復色,所以是減色系.表示方式是以%值表示,最大是100%.
WEB色系:是RGB的一個子色系(色域),當然色域最小.用以網頁等設計,只能表示256種顏色,表示方法與RGB同.但是是按比例縮小色域,如RGB(0,0,0)就是WEB色能表示的,RGB(3,0,0)也是能表示的;但RGB(2,0,0)在WEB中就是RGB(3,0,0);換句話來說,不是RGB色系的一部分.
這沒有專門的網站的,要多看一下書,一般平設開始會介紹一部分的相關知識的.
『叄』 C# 關於RGB圖像分量提取問題
Bitmapa=newBitmap("D:\s.png");//圖片名字
for(inti=0;i<a.Width;i++){
for(intj=0;j<a.Height;j++){
varc=a.GetPixel(i,j);
if(c.R==c.G&&c.R==c.B){
//灰階
}
else{
}
}
}你指的相加是加什麼,RGB相加,還是顏色間相加?
『肆』 如何用c++編程實現提取給定圖像中任意一點的RGB顏色值
控制台 讀取BMP圖片文件 輸出指定點的顏色分量
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
long biWidth;
long biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
long biXPelsPerMeter;
long biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
int ReadBmp(const char* szFileName);
int GetDIBColor(int X, int Y, BYTE *r, BYTE *g, BYTE *b);
BITMAPINFOHEADER bih;
BYTE *Buffer = NULL;
long LineByteWidth;
int main(void)
{
int x, y;
BYTE r, g, b;
int n;
char szfilename[255] = "c:\\1.bmp";
if (ReadBmp(szfilename) == 0)
{
printf("failure to read file %s", szfilename);
return 1;
}
printf("Width: %ld\n", bih.biWidth);
printf("Height: %ld\n", bih.biHeight);
printf("BitCount: %d\n\n", (int)bih.biBitCount);
while(1)
{
printf("input the X:");
scanf("%d", &x);
if (x < 0)
break;
printf("input the Y:");
scanf("%d", &y);
if (GetDIBColor(x, y, &r, &g, &b) == 1)
printf("(%d, %d): r:%d, g:%d, b:%d\n", x, y, (int)r, (int)g, (int)b);
else
printf("input error.\n");
}
free(Buffer);
return 0;
}
int ReadBmp(const char* szFileName)
{
FILE *file;
WORD bfh[7];
long dpixeladd;
if (NULL == (file = fopen(szFileName, "rb")))
{
return 0;
}
printf("%s\n", szFileName);
fread(&bfh, sizeof(WORD), 7, file);
if (bfh[0] != (WORD)(((WORD)'B')|('M'<<8)))
{
fclose(file);
return 0;
}
fread(&bih, sizeof(BITMAPINFOHEADER), 1, file);
if (bih.biBitCount < 24)
{
fclose(file);
return 0;
}
dpixeladd = bih.biBitCount / 8;
LineByteWidth = bih.biWidth * (dpixeladd);
if ((LineByteWidth % 4) != 0)
LineByteWidth += 4 - (LineByteWidth % 4);
if ((Buffer = (BYTE*)malloc(sizeof(BYTE)* LineByteWidth * bih.biHeight)) != NULL)
{
fread(Buffer, LineByteWidth * bih.biHeight, 1, file);
fclose(file);
return 1;
}
fclose(file);
return 0;
}
int GetDIBColor(int X, int Y, BYTE *r, BYTE *g, BYTE *b)
{
int dpixeladd;
BYTE *ptr;
if (X < 0 || X >= bih.biWidth || Y < 0 || Y >= bih.biHeight)
{
return 0;
}
dpixeladd = bih.biBitCount / 8;
ptr = Buffer + X * dpixeladd + (bih.biHeight - 1 - Y) * LineByteWidth;
*b = *ptr;
*g = *(ptr + 1);
*r = *(ptr + 2);
return 1;
}
『伍』 C語言圖形模式下獲取某個像素的顏色值的函數是哪個
GetPixel
http://ke..com/link?url=h-cGow92aEgBbEWE_kmHQbpj-6u1KmiBUwdMsUjLEraYF-
『陸』 用C#做一個能夠提取圖像顏色值的程序
可以的,見下面代碼
Bitmap btp = PictureBox1.Image;
Color c = btp.GetPixel(x, y);
C.R就是(x,y)坐標位置RGB的R值
C.G就是(x,y)坐標位置RGB的G值
.....................
『柒』 我有個c#問題,你能幫我嗎 我想獲取一個圖片的尺寸(cm)和顏色模式(rgb或cmyk)
你看看下面的代碼是不是你需要的

『捌』 用C判斷BMP圖片顏色的代碼修改
bmp文件有1,4,16,24位等很多種表示一個像素的格式,按LZ給的代碼的意思是只處理24位,沒有壓縮的情況,這樣的話for循環三次每次次讀到的是一個像素的BGR值.
我理解的意思是你要讀出圖片中間的一個純色的正方形的圖形的顏色,其他區域是白色。這樣的話把for循環那裡改一下
unsigned char temp[3];
int i,j;
for( i = 0; i < xsize * ysize; i++ )
{
for( j = 0; j < 3; j++ )
{
temp[j] = *image;
image++;
}
if( temp[0] == 0 && temp[1] == 0 )
{
printf("red\n");
break;
}
else if( temp[0] == 0 && temp[2] == 0 )
{
printf("green\n");
break;
}
else if( temp[1] == 0 && temp[2] == 0 )
{
printf("blue\n");
break;
}
}
我順手寫的,沒有測試,如果有問題,把要測試的圖片發來我測試一下。
另外,圖片的大小最好動態獲取,否則容易出錯。
『玖』 unity中利用Texture2D獲取圖片像素顏色應用於模型的腳本
Texture2D t2d = (Texture2D)Resources.Load("path");//讀圖片資源
Color c = t2d.GetPixel(x,y);//獲取圖片xy坐標處的顏色
gameObject.renderer.material.SetColor("_color",c);//應用顏色到shader的property
『拾』 C語言 獲取一點顏色
color=getpixel(100,200);
