积累日常生活的点滴,开发过程的心得。

Android 11下面访问Andoid/Data文件

相当麻烦

无法调试Assembly的代码

原因是Optimize Code被下面的语句给强制设为True了

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
https://stackoverflow.com/questions/48397353/visual-studio-optimizes-cod...

对点云数据做匹配合并

经典的算法是ICP(iterative closest point),利用最小二乘法做点群匹配,算出转换矩阵。

利用opencv对摄像头做3D空间矫正

标准的calibratecamera函数是对下面的方程求解

[u,v,1]=Intrincs*Transform*[x,y,z,1]

u,v,1对应的2D像素坐标,x,y,z,1对应空间坐标,求解的Intrincs是相机的内部参数,可以理解为相机各种焦距的3x3矩阵,Transform是一个旋转+平移的组合矩阵(3x4)

  1. ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1],None,None)

上边的mtx就是摄像机矩阵对应Intrincs,rvecs是旋转向量,tvecs是平移向量,dist是求解的误差系数
Transform矩阵可以使用罗德里格斯函数+平移向量组成
np.hstack((cv2.Rodrigues(rvecs[i])[0],tvecs[i]))

对于任意的3D空间坐标,可以用opencv的ProjectPoints来求解2D投影坐标
imgpoints2, _ = cv2.projectPoints(objpoints[i], rvecs[i], tvecs[i], mtx, dist)

postgresql的like查询优化

前两天发现写的一个like查询性能很慢,看了一下查询计划是全表扫描。
发现postgresql 支持gin索引来对like查询优化,使用bitmap index来加速查询。
给字段添加了几个gin索引,现在查询速度飞快。

https://www.cybertec-postgresql.com/en/postgresql-more-performance-for-l...

三维平面的旋转

平面方程式Ax+By+Cz+D=0
旋转实际上是法向量的旋转,也就是(A,B,C)的向量的旋转,根据旋转角度算出旋转矩阵,乘以法向量,
得到新的A2x+B2Y+C2z+D=0 这里平面方程的D保持不变。

计算空间2个向量夹角

https://www.cnblogs.com/lovebay/p/11411512.html

注意算完叉积要做归一化,因为叉积对应sin函数的结果,sin的取值范围是-1,1

使用新的THttpClient多线程下载文件

最新的THttpClient组件替代了TIdHttp,调用的都是各个平台的原生api,天然支持https,不需要额外部署ssl的库。

  1. unit CMain;
  2.  
  3. interface
  4.  
  5. uses
  6. System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  7. FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
  8. FMX.TreeView, System.Generics.Collections, System.Net.HttpClient, System.Net.URLClient;
  9.  
  10. type
  11. TFormMain = class(TForm)
  12. tvDownload: TTreeView;
  13. tiRoot: TTreeViewItem;
  14. tiVideo: TTreeViewItem;
  15. tiEat: TTreeViewItem;
  16. tiFat: TTreeViewItem;
  17. tiNG: TTreeViewItem;

IOS上监听用户抓屏的事件

  1. unit CMain;
  2.  
  3. interface
  4.  
  5. uses
  6. System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  7. FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Macapi.ObjectiveC,
  8. iOSapi.Foundation, System.TypInfo,iOSapi.UIKit,
  9. FMX.Controls.Presentation, FMX.StdCtrls;
  10.  
  11. type
  12. TShotListener=class;
  13. TFormMain = class(TForm)
  14. lblMsg: TLabel;
  15. procedure FormCreate(Sender: TObject);
  16. procedure FormDestroy(Sender: TObject);
  17. private
  18. { Private declarations }
  19. FListener:TShotListener;
  20. public
  21. { Public declarations }
  22. end;

同步内容