日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Atitit 图像扫描器---基于扫描线

發(fā)布時間:2025/3/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Atitit 图像扫描器---基于扫描线 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

?

?

?

?

Atitit 圖像掃描器---基于掃描線

?

調用范例

?* @throws?FileExistEx

?*/

public?static?void?main(String[]?args)?throws?FileExistEx?{

String?s?=?"C:\\00p\\a1115_210836_162 dilate.jpg.png";

String?ext?=?filex.getExtName(s);

// s="C:\\00capch\\p5.jpg";

BufferedImage?src?=?imgx.toImg(s);

?

ImgTraver_lineScaner?trvr?=?new?ImgTraver_lineScaner().setSrc(src);

trvr.cur_Pix_Point_process_Fun_Handler?=?pnt?->?{

int?rgb?=?src.getRGB(pnt.x,?pnt.y);

HSV?hsv?=?ColorUtil.rgb2hsv(rgb);

// System.out.println(pnt+ "hsv:"+hsv);

if?(hsv.v?<?0.6)?// dark clolor

throw?new?CurPixArrivdBoderEx();

};

Rectangle?rect?=?trvr.trav();

?

package com.attilax.img;

?

import java.awt.Color;

import java.awt.Point;

import java.awt.Rectangle;

import java.awt.image.BufferedImage;

import java.util.function.Function;

?

import com.attilax.img.other.CurPixArrivdBoderEx;

import com.attilax.img.other.LineArrivdBorderEx;

import com.attilax.img.other.NewLineColorCheck;

import com.attilax.img.other.ProcessPointColor;

import com.attilax.io.FileExistEx;

import com.attilax.io.filex;

?

public class ImgTraver_lineScaner {

public static void main(String[] args) {

String s = "C:\\00p\\a1115_210836_162 dilate.jpg";

// s="C:\\00capch\\p5.jpg";

BufferedImage src = imgx.toImg(s);

// Rectangle rect=new ImgTraver_lineScaner().setSrc(src)

//new Rectangle(x, y, width, height)

// t();

System.out.println("--f");

}

?

private static void t() {

BufferedImage dest = null ;//= new DilateFilterV3().filter(src, null);

?

// BufferedImage dest= imgx.clone(src);

try {

imgx.save_png(dest, "C:\\00p\\a" + filex.getUUidName() + " dilate.jpg",false);

} catch (FileExistEx e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public BufferedImage getSrc() {

return src;

}

?

public ImgTraver_lineScaner setSrc(BufferedImage src) {

this.src = src;return this;

}

?

public void trave_downScan_lineByline(BufferedImage src, Point ini_select_Point_just4x) throws LineArrivdBorderEx ?{

int width = src.getWidth();

int height = src.getHeight();

?

for (int y = ini_select_Point_just4x.y; y < height; y++) {

?

scanLine(src, ini_select_Point_just4x, y);

?

}

?

}

?

public void trave_toDownScan_lineByline(BufferedImage src, Point ini_select_Point_just4x) throws LineArrivdBorderEx, CurPixArrivdBoderEx ?{

int width = src.getWidth();

int height = src.getHeight();

?

for (int y = ini_select_Point_just4x.y; y < height; y++) {

?

?

scanLineV2(src, ini_select_Point_just4x, y);

?

?

}

?

}

public ProcessPointColor ?cur_Pix_Point_process_Fun_Handler;

public Function<Integer,Boolean> ?checkIsMeetBorderPix_Handler;

public Function ?new_line_upNdown_evt_handler;

public Function ?new_line_scanFinish_evt_handler;

private BufferedImage src;

//public ?NewLineColorCheck ?newLineFirstColorCheckFun;

private void scanLine(BufferedImage src, Point ini_selectedPoint, int y) throws LineArrivdBorderEx ?????{

new_line_upNdown_evt_handler.apply(new Point(ini_selectedPoint.x,y));

int cur_line_point_color = src.getRGB(ini_selectedPoint.x, y);// x is ini,y is next line point

?

if (checkIsMeetBorderPix_Handler.apply(cur_line_point_color))

throw new LineArrivdBorderEx();

?

// left scan

try {

leftScan(src, ini_selectedPoint, y);

} catch (CurPixArrivdBoderEx e) {

?

}

// right scan

try {

rightScan(src, ini_selectedPoint, y);

} catch (CurPixArrivdBoderEx e) {

?

}

}

private void scanLineV2(BufferedImage src, Point ini_selectedPoint, int y) throws LineArrivdBorderEx, CurPixArrivdBoderEx ?????{

if(new_line_upNdown_evt_handler!=null)

new_line_upNdown_evt_handler.apply(new Point(ini_selectedPoint.x,y));

int cur_line_point_color = src.getRGB(ini_selectedPoint.x, y);// x is ini,y is next line point

?

if(checkIsMeetBorderPix_Handler!=null)

if (checkIsMeetBorderPix_Handler.apply(cur_line_point_color))

throw new LineArrivdBorderEx();

?

// left scan

?

leftScan(src, ini_selectedPoint, y);

??

?

// right scan

?

rightScan(src, ini_selectedPoint, y);

?

}

public void trave_upScan_lineByLine(BufferedImage src, Point ini_selectedPoint) throws ??LineArrivdBorderEx {

int width = src.getWidth();

int height = src.getHeight();

// ?ini_select_color_int = src.getRGB(ini_selectedPoint.x, ini_selectedPoint.y);

?

for (int y = ini_selectedPoint.y-1; y >0; y--) {

?

scanLine(src, ini_selectedPoint, y);

?

}

?

}

public void trave_toUpScan_lineByLine(BufferedImage src, Point ini_selectedPoint) throws ??LineArrivdBorderEx, CurPixArrivdBoderEx {

int width = src.getWidth();

int height = src.getHeight();

// ?ini_select_color_int = src.getRGB(ini_selectedPoint.x, ini_selectedPoint.y);

?

for (int y = ini_selectedPoint.y-1; y >0; y--) {

?

scanLineV2(src, ini_selectedPoint, y);

?

}

?

}

public void trave_toRitScan_lineByLine(int startX) throws ??LineArrivdBorderEx, CurPixArrivdBoderEx {

int width = src.getWidth();

int height = src.getHeight();

// ?ini_select_color_int = src.getRGB(ini_selectedPoint.x, ini_selectedPoint.y);

?

for (int x = startX; x<src.getWidth(); x++) {

?

scanLine_vert(x);

//scanLine(src, ini_selectedPoint, y);

if(new_line_scanFinish_evt_handler!=null)

new_line_scanFinish_evt_handler.apply(null);

}

?

}

?

/**

attilax ???20161116日 ?下午3:13:00

?* @param src

?* @param x

?* @throws CurPixArrivdBoderEx

?*/

@Deprecated

private void scanLine_vert_toRit(BufferedImage src, int x) throws CurPixArrivdBoderEx {

for (int y = 0; y<src.getHeight(); y++) {

if(x==15)

System.out.println("dbg");

Point preLeftPoint=new Point(x, y);

if(x<9)

{

System.out.println("dbg");

}

?int clr=src.getRGB(preLeftPoint.x,preLeftPoint. y);

?//if(checkIsMeetBorderPix_Handler.apply(clr))

??this.cur_Pix_Point_process_Fun_Handler.apply(preLeftPoint);

//

?

}

}

public Point nowPoint;

?

public void trave_toLeftScan_lineByLine(int startX) throws ??LineArrivdBorderEx {

int width = src.getWidth();

int height = src.getHeight();

// ?ini_select_color_int = src.getRGB(ini_selectedPoint.x, ini_selectedPoint.y);

?

for (int x=startX;x>0;x--) {

?

try {

scanLine_vert( x);

} catch (CurPixArrivdBoderEx e) {

throw new LineArrivdBorderEx();

}

?

}

?

}

?

?

/**

attilax ???20161116日 ?下午3:23:11

?* @param x

?* @throws CurPixArrivdBoderEx

?*/

private void scanLine_vert(int x) throws CurPixArrivdBoderEx {

for (int y = 0; y<src.getHeight(); y++) {

nowPoint=new Point(x, y);

if(x==15)

System.out.println("dbg");

Point preLeftPoint=new Point(x, y);

if(x<9)

{

System.out.println("dbg");

}

?int clr=src.getRGB(preLeftPoint.x,preLeftPoint. y);

?//if(checkIsMeetBorderPix_Handler.apply(clr))

??this.cur_Pix_Point_process_Fun_Handler.apply(preLeftPoint);

//

?

}

}

?

/**

?* left and curSelectPoint

?* @param src

?* @param ini_selectedPoint

?* @param y

?* @throws CurPixArrivdBoderEx

?*/

private void leftScan(BufferedImage src,Point ini_selectedPoint, int y) throws CurPixArrivdBoderEx {

for (int x = ini_selectedPoint.x; x > 0; x--) {

if(x==15)

System.out.println("dbg");

Point preLeftPoint=new Point(x, y);

if(x<9)

{

System.out.println("dbg");

}

?int clr=src.getRGB(preLeftPoint.x,preLeftPoint. y);

?//if(checkIsMeetBorderPix_Handler.apply(clr))

??this.cur_Pix_Point_process_Fun_Handler.apply(preLeftPoint);

//

?

}

}

?

?

?

private void rightScan(BufferedImage src, ?Point selectedPoint, int y) throws CurPixArrivdBoderEx {

//int select_color_int = src.getRGB(selectedPoint.x, selectedPoint.y);//-65536 red

//Color curClr=new Color(ini_select_color_int);

for (int x = selectedPoint.x+1; x < src.getWidth(); x++) {

?

Point nextRightPoint=new Point(x, y);

nowPoint=nextRightPoint;

this.cur_Pix_Point_process_Fun_Handler.apply(nextRightPoint);

}

}

?

/**

attilax ???2016119日 ?下午6:47:18

?* @param img

?* @param startPixPoint

?*/

public void scan_Byline_from_startPixPoint(BufferedImage img, Point startPixPoint) {

try {

trave_downScan_lineByline(img, startPixPoint);

} catch (LineArrivdBorderEx e) {

?

}

?

try {

trave_upScan_lineByLine(img, startPixPoint);

} catch (LineArrivdBorderEx e) {

?

}

}

?

/**

attilax ???20161116日 ?下午3:37:24

?* @return

?*/

public ?Rectangle trav() {

int ?lastX = 0; int x = 0;int y = 0;int lastY = 0;

try {

trave_toLeftScan_lineByLine(src.getWidth()-1);

} catch (LineArrivdBorderEx e ) {

?

System.out.println(e.getMessage());

lastX=nowPoint.x;

if(lastX+2 <src.getWidth())

lastX=lastX+2;

}

try {

trave_toRitScan_lineByLine(0);

} catch (LineArrivdBorderEx | CurPixArrivdBoderEx e) {

System.out.println(e.getMessage());

x=nowPoint.x;

if(x-1!=0)

x=x-1;

}

try {

trave_toDownScan_lineByline(src,new Point(0,0) ?);

} catch (LineArrivdBorderEx | CurPixArrivdBoderEx e) {

System.out.println(e.getMessage());

y=nowPoint.y;

if(y-1!=0)

y=y-1;

}

try {

trave_toUpScan_lineByLine(src, new Point(0,src.getHeight()-1 ));

} catch (LineArrivdBorderEx | CurPixArrivdBoderEx e) {

System.out.println(e.getMessage());

lastY=nowPoint.y;

if(lastY+2 <src.getHeight())

lastY=lastY+2;

}

return new Rectangle(x, y, lastX-x, lastY-y);

}

?

?

}

?

?

作者::?綽號:老哇的爪子?(?全名::Attilax?Akbar?Al?Rapanui?阿提拉克斯?阿克巴?阿爾?拉帕努伊?)?

漢字名:艾提拉(艾龍)???EMAIL:1466519819@qq.com

轉載請注明來源:?http://www.cnblogs.com/attilax/

Atiend

?

?

總結

以上是生活随笔為你收集整理的Atitit 图像扫描器---基于扫描线的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美色图一区二区三区 | 大咪咪av| 国产91丝袜在线播放0 | 99视频只有精品 | 99精品影视 | 视频免费在线观看 | 日韩午夜激情电影 | 澳门免费av | 91精品又粗又猛又爽 | 久久久久久久久久久影院 | 久久在线精品 | 最新日韩精品 | 久久免费手机视频 | 久久久久久久久久网站 | 国产成人在线观看免费 | 日本久操 | 91视频最新地址 | 国产美女视频免费观看下载软件 | wwwxxx黄色| 日本一区二区视频在线观看 | 性生交大片免费看l | 欧美69囗交视频 | 成人精品视频在线观看 | 欧洲亚洲一区二区三区 | 韩国三级视频在线 | 天天综合一区 | 国产婷婷一区二区三区久久 | 日韩草逼视频 | 艳妇臀荡乳欲伦交换gif | 性猛交xxxx乱大交3 | 天天干天天操av | 爱情岛论坛成人av | 天天艹av | 97久久人人 | 久久久久久一区 | 一本色道久久综合亚洲精品小说 | 激情六月色 | 无码国产色欲xxxxx视频 | 超碰在线97国产 | 亚洲精品国产福利 | 最新中文字幕免费 | 国产精品xxx在线 | 青青青国内视频在线观看软件 | 农村脱精光一级 | 免费福利视频在线观看 | 成年人免费观看视频网站 | 国产日韩欧美在线观看 | 男女啪啪网站免费 | 亚洲尤物视频 | 日韩毛片视频 | 欧日韩精品 | 日本日韩欧美 | 亚洲伊人久久久 | av啊啊 | 狠狠撸狠狠操 | 高清18麻豆 | 久草热视频 | 青青草成人免费 | 国产第9页 | 日本婷婷 | 天天摸天天干 | 这里只有精品免费视频 | 国产成人综合在线观看 | 欧美精品性视频 | 在线中文字幕网站 | 69xxx免费视频 | 日本少妇bbb| 茄子视频懂你更多在线观看 | 性欧美久久久 | 欧美日韩精品一区二区在线观看 | 成人免费看片在线观看 | 亚洲AV无码国产日韩久久 | 国产一区二区精品在线 | 精品一区二区久久久久蜜桃 | 国产成人观看 | 欧美黄色图片 | 成人免费一级片 | 在线免费成人网 | 午夜av网站 | 污污视频在线免费观看 | 国产精品自拍小视频 | 自拍三区| 日韩精彩视频 | hs网站在线观看 | 久久国产加勒比精品无码 | 精品国产欧美一区二区三区成人 | 黄色一级免费 | 美女脱裤子打屁股 | 国产精品色呦呦 | 在线爱情大片免费观看大全 | 伊人网国产 | 亚洲色图1 | 国产精品久久久久不卡 | 欧美一区二区三区在线免费观看 | 熟女丝袜一区 | 91在线精品一区二区三区 | 青青草免费观看视频 | 激情久久久久久久 | 实拍女处破www免费看 |