日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

一款开源的指纹识别SDK

發布時間:2023/12/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一款开源的指纹识别SDK 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?Biometric SDK 是一個開源的指紋識別開發包,可匹配和標識人們的指紋。計算指紋相似度

關鍵代碼:

/* Biometric SDKVersion 1.3This file contains functions that manipulate , extract features and matchfingerprint images.Copyright (C) 2005 Scott JohnstonEmail : moleisking@googlemail.comThis program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */using System; using System.Drawing; using System.Drawing.Drawing2D;namespace BiometricsSDK.FingerPrint {/// <summary>/// Summary description for CFinger./// </summary>public class CFingerPrint {//used for image//for digital persona with kit//public int FP_IMAGE_WIDTH = 500;//public int FP_IMAGE_HEIGHT = 500;//for verifinger with kit public int FP_IMAGE_WIDTH = 323;public int FP_IMAGE_HEIGHT = 352;//Used by template//be carefull the size of the array must always be 1 larger than a number divisable by 4public int FP_TEMPLATE_MAX_SIZE = 601; //used for matching//the max distance between to points when comparing two points to count as a matchpublic int FP_MATCH_POINT_DISTANCE_MOVEMENT = 10;//the max rotation to use when comparint two points to count as a matchpublic int FP_MATCH_POINT_ROTATION_MOVEMENT = 10;//10;//a percentagepublic int FP_MATCH_THRESHOLD = 55;//finger print classifications//Wirbel classpublic const int FP_CLASS_WHORL = 1 ;//lasso classpublic const int FP_CLASS_LEFT_LOOP = 2;public const int FP_CLASS_RIGHT_LOOP = 3;public const int FP_CLASS_ARCH = 4;public const int FP_CLASS_ARCH_TENTED = 5;//fingerprint template valuesprivate const int FP_TEMPLATE_SIZE = 0;private const int FP_TEMPLATE_ORIGIN_X = 1;private const int FP_TEMPLATE_ORIGIN_Y = 2;private const int FP_TEMPLATE_FEATURE_SIZE = 6;private const int FP_TEMPLATE_SEARCH_RADIUS = 1; //fingerprint origin values //private int FP_ORIGIN_SEARCH_RADIUS = 5;//holds skeletinized imagepublic byte [,] P = new byte[500,500];public CFingerPrint(){}public CFingerPrint(int width , int height ){FP_IMAGE_WIDTH = width;FP_IMAGE_HEIGHT = height;P = new byte[width,height];}public CFingerPrint(int width , int height ,int MatchPointDistanceMovement , int MatchPointRotationMovment , int MatchThreshold ){FP_IMAGE_WIDTH = width;FP_IMAGE_HEIGHT = height;FP_MATCH_POINT_DISTANCE_MOVEMENT = MatchPointDistanceMovement;FP_MATCH_POINT_ROTATION_MOVEMENT = MatchPointRotationMovment;FP_MATCH_THRESHOLD = MatchThreshold;}/// <summary>/// /// </summary>/// <param name="m_image"></param>public void setFingerPrintImage(Bitmap m_image){try{int h = m_image.Height;//原代碼為:FP_IMAGE_HEIGHT,現替換為:hint w = m_image.Width;//原代碼為:FP_IMAGE_WIDTH,現替換為:wfor (int i = 0; i <= w - 1; i++){ for (int j = 0; j <= h - 1; j++){if ((m_image.GetPixel(i, j).B <= 127) && (m_image.GetPixel(i, j).R <= 127) && (m_image.GetPixel(i, j).G <= 127)){P[i, j] = 1;}else{P[i, j] = 0;}}}//set edges to 0for (int i = 0; i <= w - 1; i++){P[i, 0] = 0;P[i, h - 1] = 0;}for (int j = 0; j <= h - 1; j++){P[0, j] = 0;P[w - 1, j] = 0;}}catch (Exception ex){throw ex;}}public Bitmap getFingerPrintImage(){Bitmap imageBuffer = new Bitmap(FP_IMAGE_WIDTH, FP_IMAGE_HEIGHT);for (int i = 0; i<= FP_IMAGE_WIDTH - 1;i++){for (int j = 0;j<= FP_IMAGE_HEIGHT - 1;j++){if (P[i, j] == 1){imageBuffer.SetPixel(i, j, Color.Blue);}else{imageBuffer.SetPixel(i, j, Color.White);}}}return imageBuffer;}public Bitmap getFingerPrintImageDetail(){//set finger print imageBitmap imageBuffer = new Bitmap(FP_IMAGE_WIDTH,FP_IMAGE_HEIGHT );for (int i = 0; i<= FP_IMAGE_WIDTH - 1;i++){for (int j = 0;j<= FP_IMAGE_HEIGHT - 1;j++){if (P[i,j] == 1)imageBuffer.SetPixel(i,j,Color.Blue);elseimageBuffer.SetPixel(i,j,Color.White );}}//get featuresdouble[] m_arr = this.getFingerPrintTemplate();// int linelength = 5;//draw pointsPen penBlue = new Pen(Color.Blue, 1);Pen penRed = new Pen(Color.Red, 1);Pen penGreen = new Pen(Color.Green, 1);Pen penGray = new Pen(Color.Gray, 1);//Graphics gf = Graphics.FromImage(Image.FromHbitmap(m_ImageBuffer.GetHbitmap() ));Graphics gf = Graphics.FromImage(imageBuffer);gf.CompositingMode = CompositingMode.SourceOver;for(int i=7 ; i<=m_arr[0]-1;i=i+6){if(m_arr[i+4]>1){gf.DrawRectangle(penRed,(int)m_arr[i]+(int)m_arr[1]-3,(int)m_arr[i+1]+(int)m_arr[2]-2,5,5);}else if(m_arr[i+4]==1){gf.DrawEllipse(penGreen,(int)m_arr[i]+(int)m_arr[1]-3,(int)m_arr[i+1]+(int)m_arr[2]-2,5,5);}}//end for//draws the origingf.DrawLine(penGray,(int)m_arr[1]-5,(int)m_arr[2],(int)m_arr[1]+5,(int)m_arr[2]);gf.DrawLine(penGray,(int)m_arr[1],(int)m_arr[2]-5,(int)m_arr[1],(int)m_arr[2]+5);return imageBuffer;}//end getFingerPrintImageDetail()public void ThinningHilditch(){int change = 1;bool mbool = true;while (change != 0){change = 0;for(int i = 2; i <= FP_IMAGE_WIDTH - 2;i++){for(int j = 2; j <= FP_IMAGE_HEIGHT - 2;j++){if (P[i,j] == 1){short c = 0;//count surrounding 1//a) Make sure pixel 1, has 2 to 6 (inclusive) neighborsif (P[i,j+1] == 1) { c++;}if (P[i+1,j+1] == 1) { c++;}if (P[i+1,j] == 1) { c++;}if (P[i+1,j-1] == 1) { c++;}if (P[i,j-1] == 1) { c++;}if (P[i-1,j-1] == 1) { c++;}if (P[i-1,j] == 1) { c++;}if (P[i-1,j+1] == 1) { c++;}if ((c >= 2) && (c <= 6 )){c = 0;//b) starting from 2, go clockwise until 9, and count the//' number of 0 to 1 transitions. This should be equal to 1.if ((P[i-1,j+1] == 0) && (P[i,j+1] == 1)) { c++;}if ((P[i,j+1] == 0) && (P[i+1,j+1] == 1)) { c++;}if ((P[i+1,j+1] == 0) && (P[i+1,j] == 1)) { c++;}if ((P[i+1,j] == 0) && (P[i+1,j-1] == 1)) { c++;}if ((P[i + 1,j-1] == 0) && (P[i,j-1] == 1)) { c++;}if ((P[i,j-1] == 0) && (P[i-1,j-1] == 1)) { c++;}if ((P[i-1,j-1] == 0) && (P[i-1,j] == 1)) { c++;}if ((P[i - 1,j] == 0) && (P[i-1,j+1] == 1)) { c++;}if (c == 1 ){c = 0;if (mbool == true){//c) 2*4*6=0 (ie either 2,4 ,or 6 is off)if ((P[i,j+1] * P[i+1,j] * P[i+1,j-1]) == 0 ){//d) 4*6*8=0if ((P[i+1,j] * P[i+1,j-1] * P[i-1,j]) == 0 ){P[i,j] = 0;change++;}}mbool = false;}else{//c) 2*6*8=0if ((P[i,j+1] * P[i+1,j-1] * P[i-1,j]) == 0){//d) 2*4*8=0if ((P[i,j+1] * P[i+1,j] * P[i-1,j]) == 0){P[i,j] = 0;change++;}}mbool = true;}}}}}}}//End While}//end ThinningHilditchAlgorithimpublic void ThinningHitAndMiss(){/** basicly you take all patterns* 111 X1X* X1X or x11 so on* 000 xxX* if these conditions are true then set the middle 1 to 0*/int c = 1;while (c != 0){c = 0;for(int i = 1;i<=FP_IMAGE_WIDTH - 1;i++){for(int j = 1;j<=FP_IMAGE_HEIGHT - 1;j++){if ((P[i,j] == 1) && (i != 0) && (j != FP_IMAGE_HEIGHT - 1) && (j != 0) && (i != FP_IMAGE_WIDTH - 1)){if ((P[i-1,j-1] == 1) &&( P[i,j-1] == 1) && (P[i+1,j-1] == 1) && (P[i-1,j+1] == 0) && (P[i,j+1] == 0) && (P[i+1,j+1] == 0)){P[i,j] = 0; //'1 on bottomc++;}else if ((P[i-1,j+1] == 1) && (P[i,j+1] == 1) && (P[i+1,j+1] == 1) && (P[i-1,j-1] == 0) && (P[i,j-1] == 0) && (P[i+1,j-1] == 0)){P[i,j] = 0; //'1 on topc++;}else if ((P[i-1,j] == 1) && (P[i-1,j - 1] == 1) && (P[i-1,j+1] == 1) && (P[i+1,j] == 0) && (P[i+1,j+1] == 0) && (P[i+1,j-1] == 0)){P[i,j] = 0; //'1 on leftc++;}else if ((P[i+1,j] == 1) && (P[i+1,j-1] == 1) && (P[i+1,j+1] == 1) && (P[i-1,j] == 0) && (P[i-1,j+1] == 0) && (P[i-1,j-1] == 0) ){P[i,j] = 0; //'1 on rightc++;}else if ((P[i-1,j] == 1) && (P[i,j-1] == 1) && (P[i,j+1] == 0) && (P[i+1,j+1] == 0) && (P[i + 1,j] == 0)){//x00//110//x1xP[i,j] = 0; //'1 on Bottem Leftc++;}else if ((P[i-1,j] == 1) && (P[i,j+1] == 1) && (P[i,j-1] == 0) && (P[i+1,j-1] == 0) && (P[i+1,j] == 0)){//x1x//110//x00P[i,j] = 0; //'1 on Top Leftc++;}else if ((P[i,j+1]== 1) && (P[i+1,j] == 1) && (P[i-1,j] == 0) && (P[i-1,j-1] == 0) && (P[i,j-1] == 0)){//x1x//011//00xP[i,j] = 0; //'1 on Top Rightc++;}else if ((P[i,j-1] == 1) && (P[i+1,j] == 1) && (P[i-1,j] == 0) && (P[i-1,j+1] == 0) && (P[i,j+1] == 0) ){//00x//011//x1xP[i,j] = 0; //'1 on Bottom Rightc++;}}}//Next}//Next}//End While}//end ThinningHitAndMisspublic void ChaneLinkAlgorithm(int ChainLinkDistance){//short count1;for(int i = 1;i<= FP_IMAGE_WIDTH - 1;i++){for (int j = 1 ; j <= FP_IMAGE_HEIGHT - 1;j++){//change second condition when changeing direction//Horizontalif ((P[i,j] == 1) && (i != FP_IMAGE_WIDTH - 1) && (i != 0) && (j != FP_IMAGE_HEIGHT - 1) && (j != 0)){if (P[i + 1,j] == 0){short countX = 0;//count Horizontal Holewhile (((i + countX) <= FP_IMAGE_WIDTH - 1) && (countX <= ChainLinkDistance)){if (((i + countX + 1) <= FP_IMAGE_WIDTH - 1) && ((countX + 1) <= ChainLinkDistance)){if (P[i + countX + 1,j] == 0){countX++;}else{break;}}else{break;}}//Fill hole if it is wide enoughif ((countX != 0) && ((countX + 1) <= ChainLinkDistance)){for (int temp = 0; temp<= countX;temp++){P[i+temp,j] = 1;}}}}//change second condition when changeing direction//Verticalif ((P[i,j] == 1) && (i != FP_IMAGE_WIDTH - 1) && (i != 0) && (j != FP_IMAGE_HEIGHT - 1) && (j != 0)){if (P[i,j+1] == 0 ){short countY = 0;//count Horizontal Holewhile (((j + countY) <= FP_IMAGE_HEIGHT-1) && (countY <= ChainLinkDistance)){if (((j + countY + 1) <= FP_IMAGE_HEIGHT-1) && ((countY + 1) <= ChainLinkDistance) ){//i pu this here bacause it kept on crashingif (P[i,j + countY + 1] == 0){countY++;}else{break;}}else{break;}}//Fill hole if it is wide enoughif ((countY != 0) && (countY + 1 <= ChainLinkDistance)){for(int temp = 0;temp<= countY;temp++){P[i,j + temp] = 1;}}}}//change second condition when changeing direction//Vertical Horizontalif ((P[i,j] == 1) && (i != FP_IMAGE_WIDTH - 1) && (i != 0) && (j != FP_IMAGE_HEIGHT - 1) && (j != 0)){if (P[i + 1,j + 1] == 0){short countYX = 0; //1//count Horizontal Holewhile ((j + countYX <= FP_IMAGE_HEIGHT-1) && (i + countYX <= FP_IMAGE_WIDTH-1) && (countYX <= ChainLinkDistance)){if (((j + countYX + 1) <= FP_IMAGE_HEIGHT-1) && ((i + countYX + 1) <= FP_IMAGE_WIDTH-1) && ((countYX + 1) <= ChainLinkDistance))if (P[i+countYX+1,j + countYX + 1] == 0){countYX++;}else{break;}else{break;}}//Fill hole if it is wide enoughif ((countYX != 0) && (countYX + 1 <= ChainLinkDistance)){for(int temp = 0 ; temp <= countYX ; temp++){P[i+temp,j+temp] = 1;}}}}}}}/// <summery> /// /// ################################ /// # Extract Origin # /// ################################ /// /// In future i want to use the gradients to classifie the finger print into the 5 different /// catagories which are marked in the FP_CLASS. /// /// This function still needs to improved and somtimes dosen't find the center of the finger print. /// /// The principle in finding the centre is simple , just find the greatest change in the gradient /// bettween two lines and you have your centre. /// /// To find the classification you have to find the average changes in gradients in the different /// sectors (if you divided your picture in 4 using the fingerprint centre as the centre).You should /// then classifie the fingerprint according to this. /// /// <summery>private Point getFingerPrintOrigin(){Point m_Point = new Point();double gradcur=0;double gradprev=0;double gradchangebig=0;double gradchange=0;double graddistancebig=0;double graddistance=0;double prevx=0;double prevy=0;for(int j =50;j<=FP_IMAGE_HEIGHT-50;j++){ for(int i =50;i<=FP_IMAGE_WIDTH-50;i++){if(P[i,j]==1){//count surrounding pixelsint tc=0;int x1=0;int y1=0;int x2=0;int y2=0;//find surrounding 1sfor (int m = -1*FP_TEMPLATE_SEARCH_RADIUS;m<=FP_TEMPLATE_SEARCH_RADIUS;m++){for (int n = -1*FP_TEMPLATE_SEARCH_RADIUS;n<=FP_TEMPLATE_SEARCH_RADIUS;n++){if ((m==FP_TEMPLATE_SEARCH_RADIUS)||(m==(-1)*FP_TEMPLATE_SEARCH_RADIUS)||(n==FP_TEMPLATE_SEARCH_RADIUS)||(n==(-1)*FP_TEMPLATE_SEARCH_RADIUS)){if(P[i+m,j+n] == 1 ){tc++;if (tc==1){x1=i+m;y1=j+n;}if (tc==2){x2=i+m;y2=j+n;}}//end if}//end if}//end for n} //end for m //does all the hard work of finding the greatest change in gradientif(tc==2){if ((x2-x1)>0){ gradcur = (y2-y1)/(x2-x1);//check to see gradient change by at least 270 degreesif((gradcur>0)&&(gradprev<0)){gradchange = Math.Abs(gradcur) + Math.Abs(gradprev) ; graddistance = Math.Abs(i) - Math.Abs(prevx); if(gradchangebig<gradchange){if (graddistancebig<graddistance){gradchangebig=gradchange;graddistancebig=graddistance;m_Point.X=i;//FP_ORIGIN_X =i;m_Point.Y=j;//FP_ORIGIN_Y =j;}}break;}//reset varibles for new checksgradprev=gradcur;gradcur=0;prevx=i;prevy=j;}//(x2-x1)>0}//end if tc==2}//end if P[x,y]==1}//end for i}//end for j// JOptionPane.showMessageDialog (null,Integer.toString(FP_ORIGIN_X)+";"+Integer.toString(FP_ORIGIN_Y),"getFingerPrintOrigin",JOptionPane.PLAIN_MESSAGE);return m_Point;}private int getFingerPrintClassification(){Point m_Point = this.getFingerPrintOrigin();double gradcur=0;//stores total gradient of cornersdouble gradlt=0;double gradrt=0;double gradlb=0;double gradrb=0;//counts total of each corner gradientdouble cgradlt=0;double cgradrt=0;double cgradlb=0;double cgradrb=0;for(int j =50;j<=FP_IMAGE_HEIGHT-50;j++){ for(int i =50;i<=FP_IMAGE_WIDTH-50;i++){if(P[i,j]==1){//count surrounding pixelsint tc=0;int x1=0;int y1=0;int x2=0;int y2=0;//find surrounding 1sfor (int m = -1*FP_TEMPLATE_SEARCH_RADIUS;m<=FP_TEMPLATE_SEARCH_RADIUS;m++){for (int n = -1*FP_TEMPLATE_SEARCH_RADIUS;n<=FP_TEMPLATE_SEARCH_RADIUS;n++){if ((m==FP_TEMPLATE_SEARCH_RADIUS)||(m==(-1)*FP_TEMPLATE_SEARCH_RADIUS)||(n==FP_TEMPLATE_SEARCH_RADIUS)||(n==(-1)*FP_TEMPLATE_SEARCH_RADIUS)){if(P[i+m,j+n] == 1 ){tc++;if (tc==1){x1=i+m;y1=j+n;}if (tc==2){x2=i+m;y2=j+n;}}//end if}//end if}//end for n} //end for m //does all the hard work of finding the greatest change in gradientif(tc==2){if ((x2-x1)>0){ gradcur = (y2-y1)/(x2-x1);//check to see gradient change by at least 270 degreesif ((x2<m_Point.X)&&(y2>m_Point.Y)){ gradlt=gradlt+gradcur;gradlt++;} else if ((x2>m_Point.X)&&(y2>m_Point.Y)){ gradrt=gradrt+gradcur;gradrt++;} else if ((x2<m_Point.X)&&(y2<m_Point.Y)){ gradlb=gradlb+gradcur;gradlb++;} else if ((x2>m_Point.X)&&(y2<m_Point.Y)){ gradrb=gradrb+gradcur;gradrb++;} }//(x2-x1)>0}//end if tc==2}//end if P[x,y]==1}//end for i}//end for j//get average gradient for 4 cornersgradlb=gradlb/cgradlb;gradrb=gradrb/cgradrb;gradlt=gradlt/cgradlt;gradrt=gradrt/cgradrt;//determin classification according to gradient//needs workif ((gradlt>0)&&(gradrt>0)&&(gradlb>0)&&(gradrb>0)){return FP_CLASS_WHORL;}else if ((gradlt>0)&&(gradrt>0)&&(gradlb>0)&&(gradrb>0)){return FP_CLASS_LEFT_LOOP;}else if ((gradlt>0)&&(gradrt>0)&&(gradlb>0)&&(gradrb>0)){return FP_CLASS_RIGHT_LOOP;}else if ((gradlt>0)&&(gradrt>0)&&(gradlb>0)&&(gradrb>0)){return FP_CLASS_ARCH;}else if ((gradlt>0)&&(gradrt>0)&&(gradlb>0)&&(gradrb>0)){return FP_CLASS_ARCH_TENTED;}else{return 1;} // JOptionPane.showMessageDialog (null,Integer.toString(FP_ORIGIN_X)+";"+Integer.toString(FP_ORIGIN_Y),"getFingerPrintOrigin",JOptionPane.PLAIN_MESSAGE);}/*<summery>################################# Extract Template #################################The template will have to be formated according to the ISO standards as set out buyNIST , NIST also has a set of binary pictures to use for examples. This database is used fordetermaning the FAR(False Acceptance Rate) and FRR (False Rejection Rate)First 7 are (elements in array , originx , originy , null , null , null ,null) after thatthe format is (x,y,r,degree ,number of ends,resultant degree).The size of the array is always pre set.There is also future work that needs to be done on genralization , basicly what this means is that you take 3 finger templates , then take the features that are common to all three templeateand you will then come out with a generalized template.This will improve quality of the template.</summery>*/public double[] getFingerPrintTemplate(){// final int SEARCH_RADIUS = 1; double x=0;double y=0;double r=0;double d=0;double[] m_arr = new double[FP_TEMPLATE_MAX_SIZE];this.ThinningHilditch();this.ThinningHitAndMiss();this.ThinningHilditch();this.ThinningHitAndMiss();Point origin = this.getFingerPrintOrigin(); m_arr[1]=origin.X;m_arr[2]=origin.Y; int c = 7 ;int previ=0;int prevj=0;bool first = true;//start from 5 units in to avoid detection of edges of finger print and out of bound exceptionsfor(int j = 5 ;j<= FP_IMAGE_HEIGHT - 6;j++){first = true; for( int i =5 ;i<= FP_IMAGE_WIDTH - 6;i++){if ((c<FP_TEMPLATE_MAX_SIZE)&&(P[i,j] == 1) && (i != FP_IMAGE_WIDTH - 1) && (i != 0) && (j != FP_IMAGE_HEIGHT - 1) && (j != 0) ){/* * Must not capture first and last feature because those are the edges of the finger print* and will provide no value to the template.*/ if(first == true){first = false;//cheak to see if previos item in array was aslo endif( (c>7)&&((m_arr[c-6]+origin.X)==previ)&&((m_arr[c-5]+origin.Y)==prevj) ){//delete previos featuem_arr[c--]=0;m_arr[c--]=0;m_arr[c--]=0;m_arr[c--]=0;m_arr[c--]=0;m_arr[c--]=0; }}else{int tc = 0;for (int m = -1*FP_TEMPLATE_SEARCH_RADIUS;m<=FP_TEMPLATE_SEARCH_RADIUS;m++){for (int n = -1*FP_TEMPLATE_SEARCH_RADIUS;n<=FP_TEMPLATE_SEARCH_RADIUS;n++){if ((m==FP_TEMPLATE_SEARCH_RADIUS)||(m==(-1)*FP_TEMPLATE_SEARCH_RADIUS)||(n==FP_TEMPLATE_SEARCH_RADIUS)||(n==(-1)*FP_TEMPLATE_SEARCH_RADIUS)){if(P[i+m,j+n] == 1 ){tc++;}//end if}//end if}//end for n} //end for m //calculate parameters necesary for templateif ((tc==1)||(tc==3)){x = i- origin.X;y = j- origin.Y;r = Math.Sqrt(x*x + y*y);if ((x>0)&&(y>0)){d =Math.Atan(y/x);}else if ((x<0)&&(y>0)){d =Math.Atan(y/x) - Math.PI ;}else if ((x<0)&&(y<0)){d =Math.PI + Math.Atan(y/x);}else if ((x>0)&&(y<0)){d =2*Math.PI + Math.Atan(y/x);}}//check to see if point already been capturedbool foundx = false; bool foundy = false; for (int m=7;m<=c;m=m+6){if(m_arr[m+4]==3){if(Math.Abs(Math.Abs((int)m_arr[m])-Math.Abs(x))<4){foundx=true;}if(Math.Abs(Math.Abs((int)m_arr[m+1])-Math.Abs(y))<4){foundy=true;}}//end if}//end for m//1 surrounding 1sif ((tc==1) && (c <= FP_TEMPLATE_MAX_SIZE-6) && (x!=0) && (y!=0) && ((foundx==false)||(foundy==false)) ){if (P[i-1,j+1] == 1) {m_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 1 ;m_arr[c++] = 135 ;}else if (P[i,j+1] == 1){m_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 1 ;m_arr[c++] =90 ;}else if (P[i+1,j+1] == 1){m_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 1 ;m_arr[c++] =45 ;}else if (P[i+1,j] == 1) {m_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 1 ;m_arr[c++] = 0 ;}else if (P[i+1,j-1] == 1){m_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 1 ;m_arr[c++] =315 ;}else if (P[i,j-1] == 1){m_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 1 ;m_arr[c++] = 270 ;}else if (P[i-1,j-1] == 1){m_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 1 ;m_arr[c++] = 225 ;}else if (P[i-1, j] == 1 ) {m_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 1 ;m_arr[c++] = 180 ;}}else if ((tc>=3)&&(c <= FP_TEMPLATE_MAX_SIZE - 6)&&(x!=0)&&(y!=0)&&((foundx==false)||(foundy==false)) ){ //3 surrounding 1sm_arr[c++] = x;m_arr[c++] = y;m_arr[c++] = r;m_arr[c++] = d;m_arr[c++] = 3;m_arr[c++] = 0;}//if tc>=3 }//end if firstprevi=i;prevj=j;//306;269if (((i- origin.X)>=(306 - 4))&&((i- origin.Y)>=(269-4))){if (((i- origin.X)<=(306+4))&&((i- origin.Y)<=(269+4))){//JOptionPane.showMessageDialog (null,Double.toString(c)+";"+Integer.toString(i)+";"+Integer.toString(j),"My Point",JOptionPane.PLAIN_MESSAGE);}}}//end if that checks for p[x,y]=1}//end for}//end for//put total size of points collected at 0 in arraym_arr[0]=c;return m_arr;}//end getFingerPrintTemplate()public String ConvertFingerPrintTemplateDoubleToString(double[] finger){String temp="";for (int i=0;i<=finger.Length-1 ; i++){temp = temp + finger[i].ToString() +";";}return temp;}public double [] ConvertFingerPrintTemplateStringToDouble(String finger){double[] m_finger = new double[FP_TEMPLATE_MAX_SIZE]; int c=-1;String m_double = "";String temp ="";for (int i=0;i<=finger.Length-1 ; i++){char[] tempch = finger.ToCharArray();temp = temp[i].ToString();if (temp==";"){m_finger[c++] =Double.Parse(m_double);}else{m_double = m_double + temp; }}return m_finger;}/// <summery> /// ################################ /// # Matching # /// ################################ /// /// Something to possably look at are /// /// Distance = (X1 -X2)^2 + (Y1 - Y2)^2. The Error_Rating , if a image is is to the left or /// right or even at a angle the distance betwwen matched points will always be the same. /// /// The matching dose account for rotation , thats what the cos and sin are for. /// /// In matching you will never get a 100% match uunless they are exactly the same /// image. 60% is quite good in general ,anything above 55% is considered a match , even /// in other commercial versions. Remember you comparing twod DIFFERENT images then drawing a conclusion of a match. /// /// </summery>//cross-corelation algorithmpublic int Match(double[] finger1,double[] finger2 , int threshold , bool fastmatch){//compare matrix with all shifted matrixes//must do later. must get the size of the array// JOptionPane.showMessageDialog (null,Double.toString(finger1[0])+";"+Double.toString(finger1[1])+";"+Double.toString(finger2[3]),"Match",JOptionPane.PLAIN_MESSAGE);double matchcount = 0;double matchcounttotal = (finger1[0]-6)/6;double bestmatch =0;double radian = Math.PI/180;bool foundpoint;for (int k = -1*FP_MATCH_POINT_ROTATION_MOVEMENT; k <= FP_MATCH_POINT_ROTATION_MOVEMENT; k++){for (int i =7; i <= finger1[0]-5; i=i+6){foundpoint = false; for (int j =7; j <= finger2[0]-5; j=j+6){if(foundpoint==false){//compare two points account for rotational , verticle and horizontal shiftint resx=0;int resy=0;double x1=0 ;double y1=0;double x2=0;double y2=0;double r=0;double d=0;//find nessasary parametersr =finger2[j+2];d = finger2[j+3];x2=finger1[i];y2=finger1[i+1];//do angle shift for xx1 = r*Math.Cos(d+(k*radian));resx = Math.Abs((int)x2 + (int)(-1*x1));//do angle shift for y y1 = r*Math.Sin(d+(k*radian));resy = Math.Abs((int)y2 + (int)(-1*y1));//cheak shift matchs count as matchif((FP_MATCH_POINT_DISTANCE_MOVEMENT > resx) && (FP_MATCH_POINT_DISTANCE_MOVEMENT > resy)){//cheak if same kind of featureif(finger1[i+4] == finger2[j+4]){//cheak if feature in same direction// if(((finger1[i+5]-finger2[j+5])<=46)||((finger1[i+5]==0)&&(finger2[j+5]==315))||((finger1[i+5]==0)&&(finger2[j+5]==45)))// {matchcount++;foundpoint = true;//break;// }//cheak if feature in same direction} //cheak if same kind of feature}//end if}//if found}//end for j}//end for i//see if we have a matchif ((((matchcount/matchcounttotal)*100)>=threshold)&& (fastmatch == true)){//found matchreturn (int)((matchcount/matchcounttotal)*100);}else{//not found match if(matchcount>bestmatch){bestmatch = matchcount;}//reset match counter to 0matchcount=0; } //end if}//end for kreturn (int)((bestmatch/matchcounttotal)*100);}//end Match}//end class }//end namespace

?

源代碼下載地址1:http://download.csdn.net/detail/lovegonghui/8996059

源代碼下載地址2:http://down.51cto.com/data/2081611
?

總結

以上是生活随笔為你收集整理的一款开源的指纹识别SDK的全部內容,希望文章能夠幫你解決所遇到的問題。

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

91福利视频在线 | 色综合久久久久综合 | 国产一区视频在线观看免费 | 欧美a级成人淫片免费看 | 成人久久久久久久久久 | 日韩欧美综合 | 日日日爽爽爽 | 亚洲精品高清在线 | 国产在线精品二区 | 狠狠久久伊人 | 狠狠色免费 | 在线不卡的av | 欧美xxxxx在线视频 | 成人免费视频免费观看 | 欧美精品少妇xxxxx喷水 | av中文字幕电影 | 久久午夜色播影院免费高清 | 日韩在线观看你懂的 | 一区二区精品视频 | 成人免费共享视频 | 免费看成人av | 亚洲精品乱码久久久久久蜜桃不爽 | 久99久精品| 伊人开心激情 | 美女黄频网站 | 一区二区三区四区五区在线视频 | 探花视频免费观看 | 日韩欧美一区二区在线观看 | 国产精品久久亚洲 | 国产精品中文字幕在线观看 | 国产亚洲精品久久久久秋 | 日日躁你夜夜躁你av蜜 | 久久毛片网站 | 国产亚洲91 | 亚洲精品国产品国语在线 | 久久免费播放 | 国产精品高 | 国产日韩欧美在线观看 | 中文免费观看 | 狠狠操狠狠干天天操 | 免费在线观看日韩 | 成人在线你懂得 | 五月天最新网址 | 久久中文欧美 | 久久天天躁夜夜躁狠狠躁2022 | 18岁免费看片 | 岛国大片免费视频 | 欧美另类成人 | 在线之家免费在线观看电影 | 激情视频一区二区三区 | 日韩av片在线| 日韩最新理论电影 | 成人免费网视频 | 欧美精品亚洲精品日韩精品 | 久要激情网 | 中文字幕一区二区三区四区久久 | 精品毛片在线 | 一区二区三区四区不卡 | 精品久久久久国产 | 欧美日韩在线免费观看视频 | 久久国产精品视频观看 | 日韩在线小视频 | 午夜精品电影 | 国产一卡二卡在线 | av在线播放亚洲 | 日韩国产欧美视频 | 91久久久久久国产精品 | 免费aa大片 | 欧美日韩三级在线观看 | a视频在线观看免费 | 中文字幕免费国产精品 | 欧美性极品xxxx做受 | 精品久久久久久久久久国产 | 精品在线99 | 国产高清中文字幕 | 婷婷丁香视频 | 一二三区在线 | 国产日韩精品在线 | 亚洲女欲精品久久久久久久18 | 激情五月婷婷丁香 | www欧美xxxx| 国产午夜激情视频 | 国产999精品 | 在线一二三区 | 2021国产在线 | 最近最新mv字幕免费观看 | 国产亚洲视频系列 | 欧美日本高清视频 | 久久久久久久久久久久国产精品 | 欧美日韩一级久久久久久免费看 | 超级碰99| 看片的网址 | 青青河边草观看完整版高清 | 久久尤物电影视频在线观看 | 操操碰 | 欧美精品小视频 | 婷婷色综| 国产一性一爱一乱一交 | 黄网站a| 亚洲国产日韩欧美在线 | 日韩av进入| 亚洲视频aaa | 特级毛片在线观看 | 国产手机在线播放 | 亚洲激情在线播放 | 国产精品18久久久久久vr | 日韩免费视频观看 | 99中文视频在线 | 日韩黄色在线观看 | 久久久久久久久久国产精品 | 色妞久久福利网 | 99久久久国产精品美女 | www激情网 | 国产精品综合久久 | 特级a毛片| 麻豆av电影 | 久久成人一区 | 九色91视频 | 免费福利视频网 | 成年人在线免费看视频 | 日韩电影久久 | 成人国产网址 | 香蕉网址| 亚洲国产中文字幕在线观看 | 中文字幕 在线看 | 久久99视频免费 | 日韩色区 | 在线精品国产 | 伊人手机在线 | 在线91网 | 日韩激情视频 | 91在线中文| 天天操天天添天天吹 | 国产精品美女久久久久久免费 | 国产999| 亚洲a网 | 免费a v在线 | 久久精品99久久 | 97综合视频 | 成人av播放 | 久久久久久国产精品久久 | 国产剧情一区二区在线观看 | 天天天综合网 | 成人av免费播放 | 日韩欧美大片免费观看 | 人人狠狠综合久久亚洲婷 | 一级α片免费看 | 国产伦理久久 | 国产在线播放观看 | 国产91精品欧美 | 色婷婷国产在线 | 亚洲国产精品va在线看黑人 | 久久久久亚洲精品中文字幕 | 久久永久免费视频 | 麻豆传媒视频在线 | 国产精品麻豆三级一区视频 | 欧美日韩国产高清视频 | 日韩av免费网站 | 亚洲国产日韩一区 | 黄色片网站av | 成人av在线亚洲 | 天天色天天色 | 国产精品久久嫩一区二区免费 | 九九99| 日韩欧美视频在线免费观看 | 亚洲国产人午在线一二区 | 日本老少交 | 中文字幕在线第一页 | 国产九九热视频 | 中文字幕色在线 | 国偷自产中文字幕亚洲手机在线 | 狠狠色丁香九九婷婷综合五月 | 日韩欧美综合视频 | 欧美国产精品一区二区 | 久久99国产综合精品免费 | 91热| 中文字幕av在线免费 | 绯色av一区| 欧美激情精品久久久久久免费 | 不卡在线一区 | 亚洲国产小视频在线观看 | 天天色天天综合 | 国产精品免费久久久久影院仙踪林 | 国产一区二区精品在线 | 最近中文字幕免费 | 青青河边草免费 | 国产精品一区二区电影 | 2021国产在线 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 成人v| 久久综合久久八八 | 在线视频精品播放 | 免费观看久久 | 激情综合网天天干 | 亚洲成熟女人毛片在线 | 婷婷六月综合亚洲 | 久久免费99精品久久久久久 | 色噜噜日韩精品一区二区三区视频 | 国产在线久草 | 久久久久在线 | 人人揉人人揉人人揉人人揉97 | 欧美激情视频一区二区三区免费 | 国产喷水在线 | 成年人av在线播放 | 九九爱免费视频 | 综合色播 | 国产电影黄色av | 伊人网av| 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 久久伦理电影 | 色香com.| 国产精品久久久久久一二三四五 | 九九爱免费视频在线观看 | 午夜精选视频 | 亚洲精品免费播放 | 色偷偷中文字幕 | 丁香网五月天 | 成人一级影视 | 国产一级黄色电影 | 黄色av播放 | 久久成年人视频 | 久久视频在线免费观看 | 国产高清免费在线播放 | 深夜精品福利 | 在线看v片 | 亚洲天堂网在线播放 | 免费视频xnxx com | av在线一 | 久草视频免费 | 91探花国产综合在线精品 | 一区二区网 | 99视频在线观看视频 | 国产精品一区二区三区99 | 五月综合激情网 | 欧美性视频网站 | 激情视频网页 | 国产一区精品在线 | 97在线视频网站 | 日本二区三区在线 | 69精品久久| 久久五月天婷婷 | www.97视频| 久久国产成人午夜av影院潦草 | 99 精品 在线 | 欧洲激情综合 | 久久国产品| 9在线观看免费高清完整版在线观看明 | 国产福利一区二区三区在线观看 | 国产精品一二三 | 欧美大片第1页 | 麻豆视频在线免费看 | 国产小视频精品 | 久久久国产精品久久久 | 中文字幕一区二区三区四区 | 日韩免费av在线 | 激情av五月婷婷 | 免费男女网站 | 成人在线视频一区 | 久久久久免费观看 | 在线观看中文字幕一区二区 | 91视频成人免费 | 精品欧美小视频在线观看 | 99精品国产兔费观看久久99 | 在线免费性生活片 | 久草久草在线 | 色干综合| 日日夜夜免费精品视频 | 97超碰成人在线 | 狠狠狠狠狠干 | 久久精品波多野结衣 | 精品久久久成人 | 深爱婷婷久久综合 | 三级黄色理论片 | 狠狠插狠狠干 | 五月天综合网 | 成人永久在线 | 亚洲国产三级在线观看 | 丝袜av一区| 成人一级视频在线观看 | 日韩电影一区二区在线观看 | av一区二区三区在线播放 | 亚洲电影一区二区 | 91视频高清免费 | 少妇性aaaaaaaaa视频 | 成人国产精品久久久 | 日韩免费久久 | 中文字幕丝袜一区二区 | 欧美一区二区三区激情视频 | 91精品国产乱码 | 五月导航 | 欧美做受69| 欧美日韩不卡在线观看 | 亚洲黄色网络 | 中文字幕 国产视频 | 欧美精品久久久 | 日韩二三区 | 欧美日韩有码 | 成人一区不卡 | 久久免费成人网 | 91av福利视频 | 亚洲最新av | 国产一区精品在线观看 | 久久久污| 亚洲 中文字幕av | 久久久久影视 | 久久久久久久久亚洲精品 | 国产无遮挡又黄又爽馒头漫画 | 日韩免费b | 久操视频在线播放 | 久久国产精品免费观看 | 久久看片网 | 美女国内精品自产拍在线播放 | 97色婷婷| 午夜aaaa| 日韩精品一区在线播放 | 精品五月天 | 一级久久精品 | 激情五月婷婷激情 | 美女在线黄| 91麻豆精品国产91久久久久久 | 国产精品久久二区 | 久久久久久国产精品免费 | 在线观看日韩一区 | 欧美亚洲xxx | 久精品视频在线 | 国产精品成人一区二区三区吃奶 | 高清国产午夜精品久久久久久 | 人人澡超碰碰97碰碰碰软件 | 国产精品久久久久久久久久东京 | 夜夜躁天天躁很躁波 | 成年人免费观看国产 | 又紧又大又爽精品一区二区 | 伊人久久电影网 | 毛片网在线播放 | 色偷偷88888欧美精品久久久 | 免费在线观看日韩 | 中文字幕在线日本 | 欧美一区日韩一区 | 国产麻豆精品一区二区 | 日本久久综合视频 | 成人啪啪18免费游戏链接 | 51久久成人国产精品麻豆 | 天堂在线成人 | 五月天狠狠操 | 久久婷婷精品视频 | 成人在线视频免费看 | 丁香狠狠| 91麻豆产精品久久久久久 | 国产成人精品av在线观 | 91久久国产综合精品女同国语 | 色丁香久久| 一区二区三区手机在线观看 | 国产视频在线一区二区 | 天天射天天操天天干 | 国产精品免费视频观看 | 日韩99热 | 青青久草在线视频 | 久久成人18免费网站 | 99热999| 国产在线综合视频 | 久久人人爽人人人人片 | 欧美精品一区二区免费 | 色综合久久悠悠 | 天天操天天操天天操天天操天天操天天操 | 亚洲成av人电影 | 免费又黄又爽的视频 | 黄色日批网站 | 亚洲精品男人的天堂 | 免费日韩高清 | 激情综合网五月 | 日韩在线无 | 日韩精品国产一区 | 黄色av一区 | 久久久www | 成人精品亚洲 | 国产高清视频在线观看 | 婷婷丁香社区 | 天天插一插 | 91黄色在线观看 | 91久久人澡人人添人人爽欧美 | 亚洲国产精品一区二区久久hs | 久久久国产精品网站 | 久久999久久 | 国产黄色美女 | 免费www视频 | 中文字幕网站视频在线 | 91成人观看| 超碰公开在线 | 99视频偷窥在线精品国自产拍 | 精品毛片久久久久久 | 日本在线观看中文字幕无线观看 | 色com| 9在线观看免费高清完整版在线观看明 | 免费高清在线视频一区· | 久久tv| 色偷偷88888欧美精品久久久 | 亚洲视频精选 | 国产一级免费片 | 玖玖视频国产 | 日本中文字幕在线电影 | 婷婷av网 | 久久国产免费视频 | 久久人人添人人爽添人人88v | 国产在线不卡精品 | 成人小视频在线播放 | 又大又硬又黄又爽视频在线观看 | 亚洲资源网 | 亚洲国产日韩av | 久久免费视频6 | 久草在线资源免费 | 狠狠躁日日躁夜夜躁av | 久久精品国产亚洲aⅴ | 国产精品不卡在线 | 日韩av电影一区 | 69视频国产| 91精品视频免费在线观看 | 久草男人天堂 | 天天色天天爱天天射综合 | 国产色网| 高清不卡一区二区三区 | 草久久久| 久久综合狠狠狠色97 | 久久99精品国产麻豆宅宅 | 91成人精品在线 | 国产成人久久av免费高清密臂 | 日韩成人看片 | 狠狠色综合网站久久久久久久 | 国产成人久久77777精品 | 免费男女网站 | 中文字幕免费在线 | 五月天六月色 | 精品国产乱子伦一区二区 | 蜜臀av性久久久久蜜臀av | 六月丁香六月婷婷 | 免费在线播放av电影 | 色婷婷久久 | 综合网五月天 | 在线观看视频h | 久久人人爽人人 | 少妇按摩av| 欧美另类网站 | 欧美成人视 | 999免费视频 | 日韩和的一区二在线 | 亚洲精品乱码久久久久久久久久 | 天天插伊人 | 亚州国产精品 | 天天插视频 | 国产精品大尺度 | 色就是色综合 | 亚洲精品日韩在线观看 | 91精品国自产拍天天拍 | 91免费网 | 久久久国产精品亚洲一区 | av在线看片 | 午夜丰满寂寞少妇精品 | 狠狠操天天射 | 欧美精品乱码久久久久久 | 国产九九在线 | 成人免费在线观看入口 | 国产91av视频在线观看 | 在线观看aaa | 亚洲黄色片 | 久久大片 | 亚洲激情 | 国产91精品在线播放 | 天天爽天天做 | 日韩av一区二区在线播放 | 日日干av| 免费看的黄网站 | 久操视频在线免费看 | 亚洲精品大全 | 国产一区二区免费看 | 国产特级毛片aaaaaa毛片 | 天堂中文在线播放 | 日韩av成人免费看 | 久久你懂的 | 日韩69av | 国产黄色特级片 | 国产又粗又猛又色 | 国产免费大片 | 伊人五月天婷婷 | 国产中文字幕网 | 黄色a一级片 | 91视频麻豆视频 | 国产视频精品免费 | 在线观看中文av | 欧美日韩首页 | 99精品免费久久久久久日本 | 精品亚洲免费 | 国产精品第 | 欧美国产一区在线 | 日韩欧美观看 | 欧美日韩一区二区三区在线免费观看 | 国产成人精品av在线 | 久久午夜色播影院免费高清 | 91中文字幕 | 91看片看淫黄大片 | 国产精品毛片一区二区在线 | 人人超碰在线 | 97福利社| av中文字幕在线看 | 在线观看香蕉视频 | 国产青青青 | 黄色成年 | 夜夜爽88888免费视频4848 | 日韩一区二区三区不卡 | 97福利在线观看 | 国产视频在线观看一区 | 国产成人精品日本亚洲999 | 99久久精品国产系列 | 亚洲精品乱码久久久久久久久久 | 亚洲一区美女视频在线观看免费 | 狠狠插天天干 | 国产成人福利在线观看 | 91精品国产92久久久久 | 国产一卡二卡四卡国 | 日韩精品高清视频 | 一区二区三区国 | 欧美激情精品久久久久久免费印度 | 久草在线综合网 | 国产精品一区二区三区四区在线观看 | 精品在线观看免费 | 天天干天天射天天插 | 久久久综合香蕉尹人综合网 | 天天干天天草 | 人人狠狠综合久久亚洲婷 | 国内精品视频一区二区三区八戒 | 黄色亚洲 | 精品免费久久久久久 | 91激情视频在线观看 | 日本三级全黄少妇三2023 | 中文字幕一区二区三区久久 | 在线超碰av | 国产精品久久久久久久久久久杏吧 | 国产成人一区二区三区电影 | 欧美日韩亚洲精品在线 | 国产精品女同一区二区三区久久夜 | 国产1区在线 | 在线观看一区二区视频 | 精品久久久99 | 中文字幕影片免费在线观看 | 久草精品在线观看 | 成人永久在线 | www.狠狠色.com | 欧美一区二区三区特黄 | 超碰大片 | 日韩av图片| 亚洲国产精品日韩 | 97成人精品视频在线播放 | 久久久免费网站 | 国产精品123 | 91精品视频一区 | 中文字幕在线视频精品 | 国产精品久久久久久久久久新婚 | 国产成人亚洲精品自产在线 | 久久精品麻豆 | 玖玖在线播放 | 国产伦理久久精品久久久久_ | 亚洲视频免费在线 | 亚洲激色 | 久久综合久久八八 | 欧美日韩国产三级 | 国产精品手机看片 | 在线精品国产 | 欧美黄色高清 | 一区免费观看 | 国产精品自产拍在线观看桃花 | 伊人中文字幕在线 | 五月天亚洲综合小说网 | 狠狠干天天色 | 精品国产不卡 | 国产精品美女在线观看 | 久久久麻豆精品一区二区 | 久保带人 | 中文字幕中文字幕 | www色| 九色porny真实丨国产18 | 97在线精品| 久久福利在线 | 久久人操 | 国内精品久久久久国产 | 免费碰碰| 色欧美日韩 | 久久伊人国产精品 | 国产网站色 | 国产精品色视频 | av电影在线观看完整版一区二区 | 中文av在线免费观看 | 一区二区三区日韩在线观看 | 欧美精品一区二区三区四区在线 | 国产精品一区免费在线观看 | 中国一级片在线观看 | 九九热在线精品视频 | 婷婷色吧 | 丁香婷婷在线 | 不卡国产视频 | 久久精品综合 | 99热免费在线 | 狠狠干天天色 | 在线免费亚洲 | 开心婷婷色 | 香蕉视频最新网址 | 8x成人在线 | 国产欧美精品一区二区三区 | 日韩精品一区二区三区外面 | av 一区 二区 久久 | 一区二区精品久久 | 最新国产精品拍自在线播放 | 久久视频免费在线观看 | 黄色大片av | 亚洲狠狠婷婷综合久久久 | 狠狠狠狠狠干 | 日韩中文字幕a | 国产美女精品久久久 | 国产精品一区久久久久 | 国产视频一区在线播放 | 免费视频色 | 精品久久一区二区三区 | 国产亚洲综合精品 | 黄色av大片| 亚洲激情 欧美激情 | 午夜少妇一区二区三区 | 日韩国产精品毛片 | 亚洲精品影院在线观看 | 日韩av图片| 在线国产日韩 | 草久草久 | 在线观看麻豆av | 欧美在线视频第一页 | 五月婷婷免费 | 欧美日韩视频免费 | 亚洲国产成人在线播放 | 久久久久欠精品国产毛片国产毛生 | 狠狠的干狠狠的操 | 日本高清中文字幕有码在线 | 91久久国产露脸精品国产闺蜜 | av丝袜制服 | 国产98色在线 | 日韩 | 精品国产伦一区二区三区观看体验 | 精品日韩在线 | 蜜桃视频在线视频 | 国产精品国产亚洲精品看不卡15 | 久久在现 | 国产成人三级三级三级97 | 182午夜在线观看 | 99视频久 | 日韩中文字幕免费视频 | 亚洲电影图片小说 | 91色网址 | 国产一区二区高清 | 天天综合网天天 | 黄色国产在线观看 | 国产不卡视频在线 | 超碰资源在线 | 久久久久久国产一区二区三区 | 日韩免费福利 | 曰本三级在线 | 欧美孕妇与黑人孕交 | 午夜电影一区 | 超碰日韩 | 国产黄色在线看 | 超级碰碰视频 | 日韩高清观看 | 中文字幕乱码在线播放 | 欧美老少交 | 国产免费嫩草影院 | 97人人模人人爽人人少妇 | 久久激情小说 | 狠狠躁夜夜a产精品视频 | 人人爽人人澡人人添人人人人 | 国产成人av电影在线观看 | 久久美女精品 | 免费看的黄色的网站 | 国产精彩视频一区二区 | 国产免费xvideos视频入口 | 成人中文字幕av | 国产精品综合久久久 | 菠萝菠萝在线精品视频 | 丁香六月婷婷 | 91久久精品一区二区二区 | 国产不卡在线观看视频 | 久久一二区| 国产精品女同一区二区三区久久夜 | 最新免费av在线 | 亚洲成人免费 | 人人狠狠| 麻豆精品91 | 久久久免费在线观看 | 91网站免费观看 | 成年人在线免费看 | 国产玖玖在线 | 日韩v在线91成人自拍 | 国产精品系列在线 | 国产精品高清免费在线观看 | 天天操 夜夜操 | 在线视频一二区 | 日韩高清在线一区二区三区 | 久久国产精品久久久久 | 手机看片国产日韩 | 99自拍视频在线观看 | 久久国产福利 | 在线观看色网站 | www.伊人网| 97品白浆高清久久久久久 | 亚洲男女精品 | 亚洲色图av | 丁香午夜 | 欧美一区二区在线 | 中文字幕久久精品 | 天天操网 | 亚洲精品午夜久久久久久久久久久 | 日韩簧片在线观看 | 91av原创 | 在线观看aaa | 久草亚洲视频 | 国产视频日韩 | 国产色区| 18女毛片| 在线观看 亚洲 | 国产99久久久国产精品免费看 | 天天玩天天操天天射 | 最近中文字幕免费观看 | 国产黄色一级大片 | 香蕉91视频 | 99久国产 | 青青草在久久免费久久免费 | 天天操天天色天天射 | 久久综合之合合综合久久 | 久草免费在线 | 日韩免费三区 | 免费色视频网址 | 久久久久久久久久电影 | 在线有码中文 | 国产精品毛片一区视频播 | 国产成人精品久久久久蜜臀 | 日韩在线观看视频中文字幕 | 亚洲欧美激情插 | 亚洲国产精品成人va在线观看 | 欧美日韩91| 在线观看岛国片 | 欧美激情视频在线免费观看 | 亚洲精品视频在线 | 国产精品不卡av | 麻豆视频网址 | 国产精品久久久亚洲 | 成人网在线免费视频 | 婷婷久久网站 | 不卡的一区二区三区 | 国产永久免费 | 二区三区在线观看 | 日本高清xxxx | www.久艹 | 久久免费一 | 成人黄色在线视频 | 人人澡澡人人 | 免费视频色 | 天天操天天色综合 | 夜夜夜夜操 | 色婷婷av在线 | 亚洲成人av在线电影 | 久久激情久久 | 人人插超碰 | 久久精品中文字幕一区二区三区 | 日韩午夜视频在线观看 | 国产一区免费观看 | 在线小视频国产 | 日韩三区在线观看 | 激情欧美国产 | 日韩极品在线 | 久久99视频免费 | 丁香花在线视频观看免费 | www.在线看片.com | 色爱区综合激月婷婷 | 国产综合婷婷 | 最新av在线网址 | 亚洲黄色一级视频 | 国产黄色大全 | 久久国产精品视频观看 | 久久视频| 久久免费的精品国产v∧ | 91亚洲视频在线观看 | 五月天国产 | 97夜夜澡人人双人人人喊 | 九九视频免费在线观看 | 久久精品网 | 久久国语露脸国产精品电影 | 亚洲激情在线视频 | 激情导航 | 亚州精品在线视频 | 色婷婷免费 | 这里只有精品视频在线 | 国产精品一区二区久久精品爱微奶 | 成人在线黄色 | 色资源在线| 中文字幕中文字幕在线一区 | 99视频在线免费播放 | 中文字幕日本在线 | 国产超碰在线观看 | 五月花丁香婷婷 | 夜色.com | 六月丁香在线观看 | 亚洲国产精品一区二区久久,亚洲午夜 | 日本精品va在线观看 | 久九视频| 99精品免费久久久久久日本 | 91大神精品视频 | 国产精品高清av | 欧美激情精品久久久久久免费印度 | 欧美日韩性 | 丁香久久综合 | 日日爽天天爽 | 亚洲精品国偷拍自产在线观看蜜桃 | 2023年中文无字幕文字 | 青青草在久久免费久久免费 | 99免在线观看免费视频高清 | 伊人五月天 | 午夜精品三区 | 成人激情开心网 | 久操视频在线播放 | 一级免费片 | av看片在线观看 | av免费看电影 | 免费国产黄线在线观看视频 | 国产区高清在线 | 粉嫩高清一区二区三区 | 日韩动漫免费观看高清完整版在线观看 | 久久久国产精品一区二区中文 | 91精品婷婷国产综合久久蝌蚪 | 成人久久久电影 | 韩国av在线| 五月婷婷激情综合网 | 欧美精品久久久久久久久免 | 一区二区三区四区久久 | 色综合五月天 | 天天射天天艹 | 成人午夜剧场在线观看 | 免费在线播放黄色 | 国产一区二区影院 | 国产尤物视频在线 | 久久在线 | 欧美色图p | 色婷婷88av视频一二三区 | 久久久久免费精品视频 | 欧美大片大全 | 又长又大又黑又粗欧美 | 日本性高潮视频 | 四虎影视精品永久在线观看 | 嫩草av影院| 中文不卡视频 | 成年人免费看av | 狠狠gao| 特级毛片爽www免费版 | 99精品一区二区三区 | 美女精品| 婷婷综合成人 | 中文字幕在线资源 | 九九热免费精品视频 | 精品国产乱码久久久久久三级人 | 99久久久久免费精品国产 | 日韩午夜在线 | 天堂黄色片| 99热 精品在线 | 国产精品一区二区你懂的 | 婷婷丁香在线视频 | 99在线播放| 国产中文字幕在线 | 亚洲男男gaygayxxxgv | 成年人在线观看免费视频 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 最新久久久 | 午夜视频在线观看一区二区三区 | 免费a级大片 | 久久激情影院 | 成人久久久电影 | www.av在线播放 | 国产精品成人自产拍在线观看 | av网站免费线看精品 | 国产精品资源在线观看 | 国产亚洲激情视频在线 | 三级小视频在线观看 | www在线观看视频 | 9i看片成人免费看片 | 男女全黄一级一级高潮免费看 | 麻豆国产视频下载 | 91看片在线观看 | 中文字幕日韩有码 | 又黄又爽的视频在线观看网站 | 18性欧美xxxⅹ性满足 | 五月天婷婷狠狠 | 日本高清中文字幕有码在线 | 欧美精品在线观看一区 | 中文字幕免费高清av | 91福利在线观看 | 国产在线精品视频 | 97国产小视频 | 欧美日韩亚洲国产一区 | 久久精品国产亚洲aⅴ | 精品主播网红福利资源观看 | 激情五月婷婷 | 久草在线视频国产 | 欧美日韩在线观看一区二区三区 | 欧美日韩一区二区视频在线观看 | 人九九精品 | 98精品国产自产在线观看 | 在线观看亚洲精品 | 一区二区中文字幕在线 | 中文在线a√在线 | 碰天天操天天 | 97超碰资源网| 在线观看一区视频 | 视频一区二区在线 | 在线视频 成人 | 久久电影日韩 | 成人免费大片黄在线播放 | 欧美日韩中文字幕综合视频 | 色在线中文字幕 | 日韩免费电影一区二区三区 | 亚洲乱码久久 | 成人在线视频你懂的 | 91成品人影院 | 亚洲一区二区三区在线看 | 中文av在线天堂 | 人人玩人人添人人澡超碰 | 中文字幕在线观看第二页 | 欧美午夜性生活 | 欧美日韩不卡一区二区三区 | 国产精品久久久久婷婷二区次 | 国产精品一区二区中文字幕 | 久久午夜国产精品 | 国产一区二区三区高清播放 | 久久看片网站 | 久久艹人人 | 最近高清中文字幕 | 久久免费精品国产 | 免费久久网站 | 黄网站色欧美视频 | 国产视频一二区 | 欧美激情综合网 | 国产成人精品一区二区三区在线 | 九九久久久久久久久激情 | 福利在线看片 | 超碰av在线 | 国产精品一二三 | 精品国模一区二区 | 欧美日韩视频在线观看一区二区 | av网站在线观看免费 | 欧美一级片| 久久精品中文字幕少妇 | 超碰激情在线 | 中文字幕最新精品 | 麻豆传媒视频观看 | 天天爱天天舔 | 中文字幕国产精品一区二区 | 亚洲欧洲精品视频 | 天天操天天干天天干 | 五月婷婷在线观看视频 | 亚洲欧美日韩一二三区 | 韩国av电影在线观看 | 在线观看国产91 | 久久99精品久久久久久秒播蜜臀 | 婷婷社区五月天 | 国产小视频在线观看免费 | 日韩区欠美精品av视频 | 99综合电影在线视频 | 最新国产视频 | 91在线观看视频 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 久久视频国产精品免费视频在线 | 不卡在线一区 | 国产成人av网 | 五月婷婷激情网 | 在线精品视频免费观看 | a天堂在线看 | 一区二区三区中文字幕在线 | 999精品| 五月开心六月伊人色婷婷 | 黄色免费电影网站 | 国产精品18久久久久久久久 | 中中文字幕av在线 | 国产精品一区二区三区久久 | 操操操av| 久久黄色a级片 | av高清网站在线观看 | 国内精品久久天天躁人人爽 | 欧美精品久 | 福利一区二区在线 | 麻豆精品国产传媒 | 日韩高清免费在线观看 | 丁香婷婷综合色啪 | 亚洲精品成人av在线 | 中文字幕免费观看视频 | 不卡国产视频 | 久久免费国产视频 | 久草电影网| 免费看黄的视频 | 五月婷婷影视 | 九九视频免费在线观看 |