用delphi比较两张图片的相似度
2010-09-17 18:00
357 查看
procedure TFrm_test.initList; var idx, i, k, x, y, l: integer; p, fn: string; bmp: TBitmap; BColor, NowColor: TColor; begin p := ExtractFilePath(Application.ExeName); bmp := TBitmap.Create; for i := 0 to 9 do begin fn := p + '\CodeBmp\ ' + IntToStr(i) + '.bmp '; if not FileExists(fn) then Continue; idx := length(PointRecList); SetLength(PointRecList, idx + 1); PointRecList[idx].Code := IntToStr(i); bmp.LoadFromFile(fn); BColor := bmp.Canvas.Pixels[0, bmp.Height - 1]; for x := 0 to bmp.Width - 1 do for y := 0 to bmp.Height - 1 do begin NowColor := bmp.Canvas.Pixels[x, y]; if NowColor <> BColor then begin l := length(PointRecList[idx].PointList); SetLength(PointRecList[idx].PointList, l + 1); PointRecList[idx].PointList[l].x := x; PointRecList[idx].PointList[l].y := y; end; end; end; FreeAndNil(bmp); // end; function getCode_Bmp(const bmp: TBitmap; strLen: integer; PointRecList: array of TPointRec): string; var j, i, l, x, y, x0, xS, beginx: integer; BColor, NowColor: TColor; PointList: array of TPoint; function getCode: string; var maxCount, k, m, j, i: integer; begin Result := '? '; if length(PointList) < 3 then exit; maxCount := 0; for i := 0 to high(PointRecList) do begin if length(PointRecList[i].PointList) < 3 then Continue; m := 0; for k := 1 to high(PointList) do begin for j := 1 to high(PointRecList[i].PointList) do if ((PointList[k].x - PointList[0].x) = (PointRecList[i].PointList[j].x - PointRecList[i].PointList[0].x) ) and ((PointList[k].y - PointList[0].y) = (PointRecList[i].PointList[j].y - PointRecList[i].PointList[0].y) ) then begin inc(m); Break; end; end; m := m * 100 div (length(PointList) - 1); if m > maxCount then begin Result := PointRecList[i].Code; maxCount := m; end; end; end; begin Result := ' '; BColor := bmp.Canvas.Pixels[0, bmp.Height - 1]; x0 := 0; xS := bmp.Width div strLen; for i := 0 to strLen - 1 do begin beginx := x0 + xS * i; SetLength(PointList, 0); for j := 0 to xS - 1 do begin x := beginx + j; for y := 0 to bmp.Height - 1 do begin NowColor := bmp.Canvas.Pixels[x, y]; if NowColor <> BColor then begin l := length(PointList); SetLength(PointList, l + 1); PointList[l].x := x; PointList[l].y := y; end; end; end; Result := Result + getCode; end; end;
相关文章推荐
- android中比较两张图片的相似度
- 转:OpenCV学习笔记3:找出人脸,同时比较两张图片中的人脸相似度
- Java 比较两张图片的相似度
- JAVA 比较两张图片的相似度
- JAVA 比较两张图片的相似度的代码(未测试)
- JAVA 比较两张图片的相似度的代码
- JAVA 比较两张图片的相似度
- JAVA比较两张图片相似度的方法
- java--比较两张图片的相似度
- 比较两张图片的相似度-python
- OpenCV学习笔记3:找出人脸,同时比较两张图片中的人脸相似度
- OpenCV学习:找出人脸,同时比较两张图片中的人脸相似度
- OpenCV学习笔记3:找出人脸,同时比较两张图片中的人脸相似度
- JAVA 比较两张图片的相似度的代码
- 如何实现“比较两张图片的相似度”,或者说“比较两张图片是否基本一致”的算法?
- JAVA 比较两张图片的相似度
- 利用空间距离比较两张图片颜色的相似度
- 两张图片相似度比较
- Java根据像素比较两张图片的相似度
- JAVA 比较两张图片的相似度