zbar源码分析确定探测图形中心点数量
Posted picky-eater
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zbar源码分析确定探测图形中心点数量相关的知识,希望对你有一定的参考价值。
static int qr_finder_centers_locate(qr_finder_center **_centers, qr_finder_edge_pt **_edge_pts, qr_reader *reader, int _width,int _height){ qr_finder_line *hlines = reader->finder_lines[0].lines; int nhlines = reader->finder_lines[0].nlines; qr_finder_line *vlines = reader->finder_lines[1].lines; int nvlines = reader->finder_lines[1].nlines; qr_finder_line **hneighbors; qr_finder_cluster *hclusters; int nhclusters; qr_finder_line **vneighbors; qr_finder_cluster *vclusters; int nvclusters; int ncenters; /*Cluster the detected lines.*/ hneighbors=(qr_finder_line **)mymalloc(SRAMEX, nhlines*sizeof(*hneighbors)); /*We require more than one line per cluster, so there are at most nhlines/2.*/ hclusters=(qr_finder_cluster *)mymalloc(SRAMEX, (nhlines>>1)*sizeof(*hclusters)); nhclusters=qr_finder_cluster_lines(hclusters,hneighbors,hlines,nhlines,0); /*We need vertical lines to be sorted by X coordinate, with ties broken by Y coordinate, for clustering purposes. We scan the image in the opposite order for cache efficiency, so sort the lines we found here.*/ qsort(vlines,nvlines,sizeof(*vlines),qr_finder_vline_cmp); vneighbors=(qr_finder_line **)mymalloc(SRAMEX, nvlines*sizeof(*vneighbors)); /*We require more than one line per cluster, so there are at most nvlines/2.*/ vclusters=(qr_finder_cluster *)mymalloc(SRAMEX, (nvlines>>1)*sizeof(*vclusters)); nvclusters=qr_finder_cluster_lines(vclusters,vneighbors,vlines,nvlines,1); /*Find line crossings among the clusters.*/ if(nhclusters>=3&&nvclusters>=3){ qr_finder_edge_pt *edge_pts; qr_finder_center *centers; int nedge_pts; int i; nedge_pts=0; for(i=0;i<nhclusters;i++)nedge_pts+=hclusters[i].nlines; for(i=0;i<nvclusters;i++)nedge_pts+=vclusters[i].nlines; nedge_pts<<=1; edge_pts=(qr_finder_edge_pt *)mymalloc(SRAMEX, nedge_pts*sizeof(*edge_pts)); centers=(qr_finder_center *)mymalloc(SRAMEX, QR_MINI(nhclusters,nvclusters)*sizeof(*centers)); ncenters=qr_finder_find_crossings(centers,edge_pts, hclusters,nhclusters,vclusters,nvclusters); *_centers=centers; *_edge_pts=edge_pts; } else ncenters=0; myfree(SRAMEX, vclusters); myfree(SRAMEX, vneighbors); myfree(SRAMEX, hclusters); myfree(SRAMEX, hneighbors); return ncenters; }
以上是关于zbar源码分析确定探测图形中心点数量的主要内容,如果未能解决你的问题,请参考以下文章
Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段
Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段
《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段