Android 混淆配置
混淆除了会使用无意义的标识符替代 Java 中的类名、变量名、方法名等等,还有很多其他好处,比如:
混淆使用压缩 Shrink 检查并删除没有使用的类 , 字段 , 方法 , 属性 。
使用 Optimize 优化字节码 , 移除无用指令。
预检 Preveirfy 会预检 Java 平台上预处理的代码。
开启 ProGuard 混淆在 build.gradle 构建脚本中的 “ android / buildTypes “ 层级中 , 配置 debug / release 相关选项 , 即可开启 ProGuard ;
12345678910buildTypes { debug { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } release ...
OpenCV常用API(持续更新)
HoughLinesP1HoughLinesP(image, rho, theta, threshold, lines=None, minLineLength=None, maxLineGap=None)
image: 必须是二值图像,推荐使用canny边缘检测的结果图像;rho: 线段以像素为单位的距离精度,double类型的,推荐用1.0theta: 线段以弧度为单位的角度精度,推荐用numpy.pi/180threshod: 累加平面的阈值参数,int类型,超过设定阈值才被检测出线段,值越大,基本上意味着检出的线段越长,检出的线段个数越少。根据情况推荐先用100试试lines:这个参数的意义未知,发现不同的lines对结果没影响,但是不要忽略了它的存在minLineLength:线段以像素为单位的最小长度,根据应用场景设置maxLineGap:同一方向上两条线段判定为一条线段的最大允许间隔(断裂),超过了设定值,则把两条线段当成一条线段,值越大,允许线段上的断裂越大,越有可能检出潜在的直线段
drawContours1cv2.drawContours(image, ...
OpenCV API:circle() 函数
函数 circle() 绘制具有给定中心和半径的空心或实心圆。
函数说明1void cv::circle (InputOutputArray img, Point center, int radius, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
参数说明img:输入图像。center:圆的中心点坐标。cv::Point (x, y)radius:半径。color:圆的颜色。cv::Scalar (B, G, R)thickness:圆形轮廓的粗细 (如果为正)。负值 (如 FILLED) 表示要绘制实心圆。lineType:圆边界的类型。查看 LineTypes。shift:中心坐标和半径值中的小数位数。
代码测试123456789101112131415161718#!/usr/bin/python# coding=utf-8import cv2from matplotlib import pyplot as pltimport numpy as npimg = cv2.i ...
OpenCV API:HoughLines()和HoughLinesP()函数
英文全称 Hough Line Transform,是用来做直线检测的方法。使用前提条件是必须 边缘检测已经完成。
霍夫线变换的原理一条直线在图像二维空间可由两个变量表示。如:
1、在笛卡尔坐标系,可由参数: 斜率和截距(m,b)表示。
2、在极坐标系,可由参数: 极径和极角(r, θ)表示。
HoughLines()函数1234void HoughLines( InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn = 0, double stn = 0, double min_theta = 0, double max_theta = CV_PI );
参数说明src:输入图像,必须8-bit的灰度图像。lines:输出的极坐标来表示直线,经过调用HoughLines ...
OpenCV API:fillConvexPoly() 和 fillPoly() 函数
fillConvexPoly() 和 fillPoly() 函数是用来填充图像不规则区域的颜色的。
fillConvexPoly() 函数此函数,只能用来填充凸多边形。只需要提供凸多边形的顶点即可。相较于下边提到的 fillPoly() 函数,它的速度更快。
1234567void fillConvexPoly(InputOutputArray img, InputArray points, const Scalar& color, int lineType = LINE_8, int shift = 0);void fillConvexPoly(InputOutputArray img, const Point* pts, int npts, const Scalar& color, int lineType = LINE_8, ...
OpenCV API:threshold()函数
图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。OpenCV中提供了函数cv::threshold();
函数:12double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );
参数说明:src:源图像。可以为8位的灰度图,也可以为32位的彩色图像。只是输出dst:输出图像。根据源图像的位数不同,输出也不同。thresh:阈值maxval:dst图像中最大值type:阈值类型,可以具体类型如下:
测试代码:12345678910111213141516171819202122232425262728293031323334353637383940414243#!/usr/bin/python# coding=utf-8 import cv2from ...
remote write failed:No space left on device
本地编译完成发布应用时候报这个错:
1Adb adb push (remote write failed: No space left on device)
第一次遇到!
百度之后说是设备没空间了!!清理一些不用文件或者应用即可解决!!
查看设备空间1234567adb connect 9.9.8.10adb rootadb remountadb shell # 进入设备命令行# 设备命令行$ su$ df -h /system # 查看/system空间使用情况,具体见下图
这里 Avail 有174M,push 是没有问题的,当你的这个值很小,那 push 就会报上边的错误了!
解决办法就是找到 /system 目录下不用的应用给删掉即可。
如果还是不行,建议重启下设备!
1、图像分割概念、原理和算法实现
开篇这篇文章开始前,我们需要安装个python包:matplotlib。
Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。我们在后续的文章中都使用这个图形库来将图片展示出来。
具体安装命令如下:
1234# 没有 anaconda,直接命令行安装pip install matplotlib# 有 anacondaconda install -n python3 matplotlib
几个重要的函数:
123456789101112from matplotlib import pyplot as plt# 下面 subplot 和 imshow 结合使用,所以写法都如下,一行中用逗号隔开# subplot方法传一个整数参数,必须是3位的,像下边 331,表示3行3列的第1个位置# subplot传三个整数,如(3,3,1),也表示3行3列的第1个位置# 下面一行表示:窗体内创建一个 3行3列的表格,将img放在第一格内# 也就是3行3列,最多就9张图片放9个格子plt.subplot(331),plt ...