小编1''*_*1''的帖子

onclick()和onblur()排序问题

我有一个输入字段,显示自定义下拉菜单.我想要以下功能:

  • 当用户单击输入字段外的任何位置时,应删除菜单.
  • 更具体地说,如果用户点击菜单中的div,则应删除菜单,根据单击的div进行特殊处理.

这是我的实现:

输入字段有一个onblur()事件,innerHTML只要用户在输入字段外单击,就会删除菜单(通过将其父项设置为空字符串).菜单中的div也有onclick()执行特殊处理的事件.

问题是onclick()单击菜单时事件永远不会触发,因为输入字段onblur()首先触发并删除菜单,包括onclick()s!

我解决了这个问题,将菜单div onclick()分成' onmousedown()onmouseup()事件,并在鼠标按下时设置一个全局标志,鼠标向上清除,类似于本答案中的建议.因为onmousedown()之前触发onblur(),onblur()如果单击其中一个菜单div ,则会设置标志,但如果屏幕上的其他位置没有,则不会.如果单击菜单,我立即返回onblur()而不删除菜单,然后等待onclick()触发,此时我可以安全地删除菜单.

有更优雅的解决方案吗?

代码看起来像这样:

<div class="menu" onmousedown="setFlag()" onmouseup="doProcessing()">...</div>
<input id="input" onblur="removeMenu()" ... />

var mouseflag;

function setFlag() {
    mouseflag = true;
}

function removeMenu() {
    if (!mouseflag) {
        document.getElementById('menu').innerHTML = '';
    }
}

function doProcessing(id, name) {
    mouseflag = false;
    ...
}
Run Code Online (Sandbox Code Playgroud)

javascript onclick onblur

82
推荐指数
2
解决办法
4万
查看次数

Android:如何在模拟器中使用网络摄像头?

我通过将前置摄像头设置为AVD Manager中的"webcam0"将网络摄像头连接到我的仿真器.当我启动模拟器的相机应用程序时,我收到错误

CameraService::connect X (pid 702) rejected (invalid cameraId 0).
Run Code Online (Sandbox Code Playgroud)

这是Android源代码的相关部分:

sp<ICamera> CameraService::connect(
    const sp<ICameraClient>& cameraClient, int cameraId) {

    int callingPid = getCallingPid();

    [...]

    if (cameraId < 0 || cameraId >= mNumberOfCameras) {
        LOGE("CameraService::connect X (pid %d) rejected (invalid cameraId %d).",
            callingPid, cameraId);
        return NULL;
    }

    [...]
}
Run Code Online (Sandbox Code Playgroud)

网络摄像头已正确分配ID为0,因为只有1个摄像头.但是,mNumberOfCameras大概仍为0.这意味着摄像机正在由仿真器注册,但它并没有费心去更新连接的摄像机的数量.

如何连接网络摄像头以便模拟器正确识别?

编辑:命令emulator -webcam-list -avd <name of your AVD>in \android-sdks\tools给出结果:

List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel …
Run Code Online (Sandbox Code Playgroud)

android

70
推荐指数
4
解决办法
9万
查看次数

快速图像阈值处理

什么是快速可靠的阈值图像可能模糊和不均匀亮度的方法?

示例(模糊但亮度均匀):

在此输入图像描述

由于不保证图像具有均匀的亮度,因此使用固定阈值是不可行的.自适应阈值可以正常工作,但由于模糊,它会在特征中产生断裂和扭曲(这里,重要的特征是数独数字):

在此输入图像描述

我也尝试过使用直方图均衡(使用OpenCV的equalizeHist功能).它可以增加对比度而不会降低亮度差异.

我发现的最佳解决方案是将图像按其形态结束(信用到此帖子)来划分,使亮度均匀,然后重新归一化,然后使用固定阈值(使用Otsu算法选择最佳阈值水平):

在此输入图像描述

以下是OpenCV for Android中的代码:

Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_ELLIPSE, new Size(19,19));
Mat closed = new Mat(); // closed will have type CV_32F
Imgproc.morphologyEx(image, closed, Imgproc.MORPH_CLOSE, kernel);
Core.divide(image, closed, closed, 1, CvType.CV_32F);
Core.normalize(closed, image, 0, 255, Core.NORM_MINMAX, CvType.CV_8U);
Imgproc.threshold(image, image, -1, 255, Imgproc.THRESH_BINARY_INV
    +Imgproc.THRESH_OTSU); 
Run Code Online (Sandbox Code Playgroud)

这很有效,但关闭操作非常慢.减小结构元素的尺寸会增加速度但会降低精度.

编辑:根据DCS的建议,我尝试使用高通滤波器.我选择了拉普拉斯滤波器,但我希望Sobel和Scharr滤波器具有相似的结果.滤波器在不包含特征的区域中拾取高频噪声,并且由于模糊而遭受与自适应阈值类似的失真.它也需要与关闭操作一样长.以下是15x15过滤器的示例:

在此输入图像描述

编辑2:根据AruniRC的回答,我使用建议的参数在图像上使用Canny边缘检测:

double mean = Core.mean(image).val[0];
Imgproc.Canny(image, image, 0.66*mean, 1.33*mean);
Run Code Online (Sandbox Code Playgroud)

我不确定如何可靠地自动微调参数以获得连接的数字.

在此输入图像描述

opencv image-processing threshold

29
推荐指数
1
解决办法
2万
查看次数

将图像旋转90度,180度或270度

我需要将图像旋转90度,180度或270度.在OpenCV4Android中我可以使用:

Imgproc.getRotationMatrix2D(new Point(center, center), degrees, 1);
Imgproc.warpAffine(src, dst, rotationMatrix, dst.size());
Run Code Online (Sandbox Code Playgroud)

但是,这是我的图像处理算法的一个巨大瓶颈.当然,通过90度的倍数的简单旋转比最一般的情况简单得多warpAffine,并且可以更有效地完成.例如,对于180度,我可以使用:

Core.flip(src, dst, -1);
Run Code Online (Sandbox Code Playgroud)

其中-1表示翻转水平轴和垂直轴.是否有类似的优化我可以用于90或270度旋转?

opencv rotation

27
推荐指数
4
解决办法
6万
查看次数

Android:Theme.Holo.Light.NoActionBar vs Theme.Light.NoTitleBar

res/values-v11/styles.xml,我无法使用,Theme.Holo.Light.NoActionBar因为它是在API级别13中添加的.我可以使用Theme.Light.NoTitleBar,而没有视觉差异吗?据我所知,他们应该都有白色背景,状态和导航栏,没有别的.

android android-theme

26
推荐指数
1
解决办法
6万
查看次数

Vector'no operator"[]"匹配Visual Studio watch中的这些操作数错误

在Visual Studio 2012中单步执行以下示例代码时:

std::vector<int> test;
test.resize(1);
test[0] = 4;
Run Code Online (Sandbox Code Playgroud)

我可以设置一个测试手表并检查它的第0个元素.但是,如果我在test [0]上设置一个监视器,我会得到错误'no operator"[]"匹配这些操作数':

在此输入图像描述

如何直接检查test [0]的值?

c++ vector visual-studio visual-studio-debugging

21
推荐指数
2
解决办法
8016
查看次数

Android:切换ToggleButton的文本颜色

要创建自定义ToggleButton,我在以下位置定义了一个新样式/res/values/styles.xml:

<style name="myToggleButton">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#000000</item>
    <item name="android:background">@drawable/my_toggle_button</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后我使用选择器指定按钮状态的外观/res/drawable/my_toggle_button.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <shape>
            [...]
        </shape>
    </item>
    <item android:state_checked="false"
        <shape>
            [...]
        </shape>
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

当状态发生变化时,如何修改此设置以切换按钮的文本颜色?

android togglebutton android-xml

19
推荐指数
1
解决办法
2万
查看次数

带掩模的OpenCV floodfill

文档为OpenCV的的floodfill功能状态:

该函数使用并更新掩码,因此您负责初始化掩码内容.洪水填充不能跨越掩码中的非零像素.例如,边缘检测器输出可以用作掩模以停止在边缘处填充.可以在对函数的多次调用中使用相同的掩码,以确保填充区域不重叠.

该功能如何更新掩码?它是否将填充中的所有像素设置为某个非零值?

opencv flood-fill

19
推荐指数
2
解决办法
4万
查看次数

为什么在范围(1)中_的列表(next(iter(()))== []?

为什么list(next(iter(())) for _ in range(1))返回一个空列表而不是提高StopIteration

>>> next(iter(()))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> [next(iter(())) for _ in range(1)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> list(next(iter(())) for _ in range(1))  # ?!
[]
Run Code Online (Sandbox Code Playgroud)

使用显式引发的自定义函数也会发生同样的事情StopIteration:

>>> def x():
...     raise StopIteration
... 
>>> x()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in x
StopIteration …
Run Code Online (Sandbox Code Playgroud)

python iterator for-loop

18
推荐指数
2
解决办法
354
查看次数

模糊图像的自适应阈值

我有一个相当模糊的数独谜题的432x432图像,其自适应阈值不好(取5x5像素的块大小,然后减去2):

在此输入图像描述

正如你所看到的,数字略有扭曲,其中有很多破损,而且有5s融入6s和6s融入8s.此外,还有很多噪音.为了修复噪声,我必须使用高斯模糊使图像更加模糊.然而,即使是相当大的高斯内核和自适应阈值blockSize(21x21,减去2)也无法消除所有断点并将数字融合在一起甚至更多:

在此输入图像描述

我还尝试在阈值处理后扩展图像,这与增加blockSize有类似的效果; 并且锐化图像,这在某种程度上没有太大作用.我还应该尝试什么?

opencv image-processing threshold

16
推荐指数
2
解决办法
2万
查看次数