Java實(shí)現(xiàn)提取圖片邊緣的示例代碼
Java提取圖片邊緣
實(shí)現(xiàn)代碼
package qrcodeServer; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; public class ServerMain { static final String rootpath="E:\\desktop\\"; static final int Y=30; static boolean isboard(BufferedImage ash,int now_x,int now_y,int w,int h,int[][] kernel1,int[][] kernel2) { int tmp=kernel1.length/2; int x=now_x-tmp,y=now_y-tmp; int ken1=0,ken2=0; for(int i=x;i<x+kernel1.length;i++) { for(int j=y;j<y+kernel1.length;j++) { if(i<0||j<0||i>=w||j>=h) { return true; } ken1+=RGBtoAsh(ash.getRGB(i, j))*kernel1[i-x][j-y]; ken2+=RGBtoAsh(ash.getRGB(i, j))*kernel2[i-x][j-y]; } } ken1=ken1<0?-ken1:ken1; ken2=ken2<0?-ken2:ken2; return (ken1+ken2)/2>Y; } public static int RGBtoAsh(int rgb) { int tmp=0; for(int i=0;i<3;i++) { tmp+=(rgb>>(i*8))&0xFF; } return tmp/3; } public static int AshtoRGB(int ash) { int tmp=0xFF000000; for(int i=0;i<3;i++) { tmp|=(ash<<(i*8)); } return tmp; } public static void main(String[] args) { try { BufferedImage bimg=ImageIO.read(new File(rootpath+"1.jpg")); int w=bimg.getWidth(),h=bimg.getHeight(); BufferedImage bimgot=new BufferedImage(w, h, Image.SCALE_DEFAULT); BufferedImage tmp=new BufferedImage(w, h, Image.SCALE_DEFAULT); int kernel1[][]= {{1,1,1,1}, {0,0,0,0}, {0,0,0,0}, {-1,-1,-1,-1}}; int kernel2[][]= {{-1,0,0,1}, {-1,0,0,1}, {-1,0,0,1}, {-1,0,0,1} }; for(int i=0;i<bimg.getWidth();i++) for(int j=0;j<bimg.getHeight();j++) { if(isboard(bimg, i, j, w, h, kernel1,kernel2)) bimgot.setRGB(i,j,0); else bimgot.setRGB(i,j,0xFFFFFFFF); } ImageIO.write(bimgot, "jpg",new File(rootpath+"out.jpg")); } catch (FileNotFoundException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } catch (IOException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } } }
下面是效果演示
到此這篇關(guān)于Java實(shí)現(xiàn)提取圖片邊緣的示例代碼的文章就介紹到這了,更多相關(guān)Java提取圖片邊緣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之圖(動力節(jié)點(diǎn)Java學(xué)院整理)
本文章主要講解學(xué)習(xí)如何使用JAVA語言以鄰接表的方式實(shí)現(xiàn)了數(shù)據(jù)結(jié)構(gòu)---圖(Graph)。對java數(shù)據(jù)結(jié)構(gòu)之圖相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2017-04-04Java 實(shí)現(xiàn)簡單Socket 通信的示例
這篇文章主要介紹了Java 實(shí)現(xiàn)簡單Socket 通信的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03深入淺析drools中Fact的equality?modes
這篇文章主要介紹了drools中Fact的equality?modes的相關(guān)知識,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05SpringMVC 數(shù)據(jù)校驗實(shí)例解析
這篇文章主要介紹了SpringMVC 數(shù)據(jù)校驗實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11java編寫創(chuàng)建數(shù)據(jù)庫和表的程序
這篇文章主要為大家詳細(xì)介紹了java編寫創(chuàng)建數(shù)據(jù)庫和表的程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10Java 迪杰斯特拉算法實(shí)現(xiàn)查找最短距離的實(shí)現(xiàn)
這篇文章主要介紹了Java 迪杰斯特拉算法實(shí)現(xiàn)查找最短距離的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09