我正在使用Googles Mobile Vision API识别静态位图中的文本(数字).现在我想放大到找到号码的地方.
这就是我扫描Bitmap并获取x和y坐标的方法
Point [] p = textBlock.getCornerPoints();
public void Test(Bitmap bitmap) {
Context context = getApplicationContext();
TextRecognizer ocrFrame = new TextRecognizer.Builder(context).build();
Frame frame = new Frame.Builder().setBitmap(bitmap).build();
ByteBuffer byteBuffer = frame.getGrayscaleImageData();
if (ocrFrame.isOperational()) {
Log.e(TAG, "Textrecognizer is operational");
}
SparseArray<TextBlock> textBlocks = ocrFrame.detect(frame);
for (int i = 0; i < textBlocks.size(); i++) {
TextBlock textBlock = textBlocks.get(textBlocks.keyAt(i));
String value = textBlock.getValue();
Point[] p = textBlock.getCornerPoints();
Log.e(TAG, "something is happening");
}
}
Run Code Online (Sandbox Code Playgroud)
此外,我使用TouchImageView显示位图.现在我用我获得的坐标调用setZoom方法,如下所示:
touchImageView.setZoom(1F,210F,748F,ImageView.ScaleType.CENTER);
但它缩放到错误的地方,我不知道为什么.有人可以给我一些提示吗?
(https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/ortiz/touch/TouchImageView.java)
编辑:好的,我发现缩放类型做了我没有得到的东西.我想这里的问题是setZoom.我必须将位图的坐标转换为Touchimageview的坐标. …
我正在使用Dapper并执行以下查询,该查询已映射到type列表MyObject。默认映射器的问题是int我的表(INOUT)中有一个可为空的字段,其中包含整数值。一个可能的值是NULL,它将被映射为整数0。如何防止这种情况?我必须知道INOUT是NULL还是0。
public List<MyObject> GetSomething()
{
using (IDbConnection db = GetOpenConnection())
{
return db.Query<MyObject>("Select * from tbl_foo").ToList<MyObject>();
}
}
public class MyObject
{
public int INOUT { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 当我通过单击鼠标缩放到特定位置然后尝试平移或使用鼠标滚轮时,缩放行为会跳跃。似乎我的缩放级别正在恢复,就像单击鼠标之前一样。
这是我的事件处理程序:
function click(d) {
var x, y, k;
if (d && centered !== d) {
var centroid = path.centroid(d);
x = centroid[0];
y = centroid[1];
k = 4;
centered = d;
} else {
x = width / 2;
y = height / 2;
k = 1;
centered = null;
}
svgContainer.transition()
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")");
} …Run Code Online (Sandbox Code Playgroud) 您好我没有得到以下两个asnyc函数之间的区别,有人可以解释一下吗?它们都没有返回IRestResponse,所以我无法访问StatusCode字段.我必须在这里投吗?
public async Task<IRestResponse> Post<T>(string Ressource, T ObjTOPost) where T : new()
{
return await Task.Factory.StartNew(() =>
{
var client = new RestClient("test.com");
var request = new RestRequest(Ressource, Method.POST);
var response = client.Execute(request);
return response;
});
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
public async Task<IRestResponse> Post<T>(string Ressource, T ObjTOPost) where T : new()
{
var client = new RestClient("test.com");
var request = new RestRequest(Ressource, Method.POST);
var response = await client.ExecuteTaskAsync<T>(request);
return response;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在移动设备上显示超过 6000 个多边形。目前,我正在使用 d3.js 库在 Android WebView 中使用 SVG 路径来执行此操作。它有效,但我必须处理性能问题,当我拖动地图或缩放时,我的地图变得非常滞后。
我现在的想法是尝试用pixijs做同样的事情。我的数据最初来自 ESRI Shapefiles。我将这些 Shapefile 转换为 GeoJSON,然后转换为 SVG。我的顶点数组看起来像这样,我试图将其传递给 drawPolygon 函数
0:994.9867684400124 1:22.308409862458518 2:1042.2789743912592 3:61.07148769269074
但是当我尝试渲染这些多边形时,没有显示任何内容。这是我的代码:
var renderer = PIXI.autoDetectRenderer(1800, 1800, { backgroundColor: 0x000000, antialias: true });
document.body.appendChild(renderer.view);
var stage = new PIXI.Container();
var graphics = new PIXI.Graphics();
var totalShapes = feat.features.length;
for (var i = 1; i <= totalShapes -1; i++) {
var shape = feat.features[i];
var geometry = shape.geometry.bbox;
graphics.beginFill(0xe74c3c);
graphics.drawPolygon([ geometry]);
graphics.endFill();
stage.addChild(graphics);
renderer.render(stage);
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我或者建议我采用不同的方式吗?
我对以下情况感到迷失。
我在 Android 应用程序中使用 OpenLayers 6。我有大约 4000 个 geoJson 功能要显示。它只是一个包含 4000 个特征的矢量图层。
对于其中的 3000 个,我必须设置一个单独的文本(所有这些文本在属性中都有一个唯一的 ID)
当我为每个功能创建一个样式而不缓存它们时,我的应用程序会崩溃,因为内存使用量增加到超过 2GB。当我创建样式并按功能 ID 缓存它们时,我仍然需要创建 3000 个样式,并且我的应用程序也会崩溃。
现在,当我按颜色缓存样式时,我得到 2 个样式。该应用程序运行良好,但现在我无法设置单独的文本,因为文本位于样式对象中,而我只有其中两个。
如果每个功能都有单独的样式(没有缓存或按 ID 缓存),这将是我的解决方案。
map.once('postrender', function(event) {
addStyle();
});
function addStyle() {
var vectorLayer;
var layersObject = map.getLayers();
for (var i = 0; i < layersObject.array_.length; i++) {
vectorLayer = layersObject.array_[i];
break;
}
var arrFeatures = vectorLayer.getSource().getFeatures();
var i = 0;
for (i; i <= arrFeatures.length - 1; i++) {
var feat = arrFeatures[i];
var myId …Run Code Online (Sandbox Code Playgroud) 我有一个包含对象的列表.该对象的一个属性来自类型日期,我想按日期分组并删除该项,如果一个组只持有一个项目.
我的列表已按日期排序:
01.01.2018
01.01.2018
02.01.2018 <- this one should be removed
03.01.2018
03.01.2018
Run Code Online (Sandbox Code Playgroud)
我的linq方法看起来像这样:
var listCleaned = myList.GroupBy(x => x.WHEN.ToShortDateString())
.TakeWhile(y => y.Count() > 1)
.SelectMany(i => i.ToList())
.ToList();
Run Code Online (Sandbox Code Playgroud)
我的这个问题是,2018年2月1日之后的每个项目也将被删除.
c# ×3
svg ×2
android ×1
async-await ×1
asynchronous ×1
d3.js ×1
dapper ×1
geojson ×1
gis ×1
linq ×1
openlayers ×1
openlayers-6 ×1
pixi.js ×1
polygon ×1
zoom ×1
zooming ×1