日韩性视频-久久久蜜桃-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 图像扫描器---基于扫描线的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 白白色免费视频 | 在线观看欧美日韩视频 | 精品影片一区二区入口 | www.亚洲人| 日本少妇网站 | 制服诱惑一区二区 | 亚洲一本之道 | 国产一区二区三区视频 | 国产精品99久久免费黑人人妻 | 国产真实在线 | 在线视频 中文字幕 | 久久视频一区二区 | 绝顶高潮合集videos | 久久久性色精品国产免费观看 | 五月婷婷综合在线观看 | 美女a视频 | 一区二区不卡在线 | 另类一区二区三区 | 永久免费成人代码 | 九一成人网 | 成片在线观看 | 久久久视频在线观看 | 全肉的吸乳文 | 成人动漫视频 | 日韩tv| 成年在线视频 | 性开放淫合集 | 性插免费视频 | 毛片一区二区三区 | 亚洲第一女人av | 超碰伊人久久 | 欧美黄页在线观看 | 激情五月婷婷丁香 | 少妇日皮视频 | 98在线视频 | 制服丝袜第一页在线观看 | 男生脱女生衣服 | 成人a√ | 精品动漫一区二区三区 | 日操操| 免费看一级黄色大片 | 人妻丰满熟妇无码区免费 | 激情小说亚洲色图 | 亚洲少妇30p| 亚洲精品乱码久久久久久按摩观 | 91麻豆精品一二三区在线 | 色福利视频 | 成人三级影院 | 57pao国产精品一区 | 男人天堂视频网 | 激情片| 亚洲一区动漫 | 成人快色| 日韩一区欧美一区 | 91调教视频 | 爽爽免费视频 | 9999精品| www国产视频 | 日韩av在线免费 | 国产精品乱码久久久久久久久 | 色人人 | 免费看黄在线看 | 天天天天 | 99久久精品无码一区二区毛片 | 日本三级中国三级99人妇网站 | 亚洲欧美在线视频观看 | japanese av在线| 国产成人啪精品午夜在线观看 | 免费a级大片 | 日日干日日爽 | 一区二区精品区 | 在线观看69 | 高清一区二区三区四区 | 99久久99久久精品国产片果冰 | 蜜桃av噜噜一区二区三区网址 | 青青草一区二区三区 | 国产成人精品一区二三区 | 日日日网站 | 国产精选在线观看 | 黄黄视频在线观看 | 六月婷婷在线 | 精品丰满人妻无套内射 | 国产精品白丝喷水在线观看 | 99资源 | 一级做a爱片久久 | 又爽av| 4438激情网 | 国产视频久久 | 天天综合视频 | 茄子av在线 | 精品人妻一区二区三区香蕉 | 四虎成人av | 日本黄色电影网址 | 91精品一区二区三区综合在线爱 | 日本黄网在线观看 | 国产+高潮+白浆+无码 | av狠狠干 | 99在线成人精品视频 | 国产av国片精品 |