图片处理!(100分)

  • 主题发起人 主题发起人 润五月
  • 开始时间 开始时间

润五月

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么才能实现用程序把tif格式的图像中的文字自动改变颜色?
 
有點意思
 
圖像中的文字﹐那已經是圖像的一部分了。你要判斷那是不是文字﹐要用到自動識別了﹐不
容易喲。
 
这个问题可不好办,图像文件中取文字,那就属于自动试别系统,你用过方正OCR软件,
 
呵呵,这几个字的颜色和其他地方是不一样的。这样就很简单了吧
我主要想知道怎样把位图文件转化为二进制文件。
 
to 卷起千堆雪tyn
这是我的代码:
for i:=0 to image1.Picture.Bitmap.Height -1 do
begin
paa:=Image1.Picture.Bitmap.ScanLine;
for j:= 0 to image1.Picture.Bitmap.Width-1 do

begin

if (paa^[j].rgbtred=0) and (paa^[j].rgbtblue=0) and (paa^[j].rgbtgreen=0) then
begin
paa^[j].rgbtGreen:=255;
paa^[j].rgbtBlue:=0;
paa^[j].rgbtRed:=0;
end;
end;
end;
image1.Picture.SaveToFile(edit1.Text);
可运行之后得到的图片不可识别了
 
谢谢,我再看看
 
多人接受答案了。
 
>这几个字的颜色和其他地方是不一样的:

楼上的兄弟,你早这么说不就省事了么?
利用扫描线一行一行的扫描下去,遇到字体的那种颜色就换色,so easy~~~~

>怎样把位图文件转化为二进制文件:

最好是利用内存文件映射,因为你的位图文件有可能很大
基本步骤 :

1、调用CreateFile打开您想要映射的文件。
2、调用CreateFileMapping,其中要求传入先前CreateFile返回的句柄,
该函数生成一个建立在CreateFile函数创建的文件对象基础上的内存映射对象。
3、调用MapViewOfFile函数映射整个文件的一个区域或者整个文件到内存。
该函数返回指向映射到内存的第一个字节的指针。
4、用该指针来读写文件。
5、调用UnmapViewOfFile来解除文件映射。
6、调用CloseHandle来关闭内存映射文件。注意必须传入内存映射文件的句柄。
7、调用CloseHandle来关闭文件。注意必须传入由CreateFile创建的文件的句柄。

假设你是24位真彩图 :
var
paa :PByteArray;
bmp :TBitmap;
begin
bmp :=TBitmap.Create;
bmp.Assign(Image1.Picture.Bitmap);
for i:=0 to bmp.Height -1 do
begin
paa:=bmp.ScanLine;
for j:= 0 to bmp.Width-1 do
begin
if (paa[3*j]=0) and (paa[3*j+1]=0) and (paa[3*j+2]=0) then
begin
paa[3*j]:=255;
paa[3*j+1]:=0;
paa[3*j]:=0;
end;
end;
end;
Image1.Picture.Bitmap.Assign(bmp);
image1.Picture.SaveToFile('.......);//换色以后得到的位图
bmp.Free;
end;
 
后退
顶部