小编Sia*_*hei的帖子

OpenCV检测图像上的斑点

我需要在图像上找到(并绘制rect)/获取最大和最小半径 blob.(以下样本)

问题是为图像找到正确的过滤器,允许CannyThreshold转换以突出显示blob.然后我将用来findContours找到矩形.

我试过了:

  • Threshold - 不同级别

  • blur->erode->erode->grayscale->canny

  • 用各种"线条" 改变图像色调

等.更好的结果是检测斑块(20-30%).并且此信息不允许在blob周围绘制rect.此外,感谢阴影,检测到与blob点无关,因此也阻止了检测区域.

据我所知,我需要找到具有强烈对比度的计数器(不像阴影那样平滑).有没有办法用openCV做到这一点?

更新

案例分开:图像1,图像2,图像3,图像4,图像5,图像6,图像7,图像8,图像9,图像10,图像11,图像12

还有一个更新

我相信斑点在边缘有对比区域.所以,我试图让边缘更强:我已经创建了2 gray scale Mat: A and B,申请Gaussian blur了第二个 - B (为了减少噪点),然后我做了一些计算:绕过每个像素并找到Xi,Yi' 之间的最大差异'来自'B'的'和附近的点:

在此输入图像描述

并适用max差异Xi,Yi.所以我得到这样的smth:

在此输入图像描述

我是在正确的方式吗?顺便说一句,我可以通过OpenCV方法达到smth吗?

更新 图像去噪有助于减少噪音,Sobel- 突出轮廓,然后threshold+findContours …

opencv objective-c opencv3.0 opencv3.1

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

WebView WebRTC无法正常工作

我正试图在WebRTC聊天中显示WebView.与本文档 相关的WebView v36支持WebRTC.对于我的测试,我正在使用设备,Chrome/39.0.0.0并添加了许可表示:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<user-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)

但是当进入聊天时,在日志中看到铬错误(设备没有显示\翻译任何内容,只有'加载'进度条):

W/AudioManagerAndroid: Requires MODIFY_AUDIO_SETTINGS and RECORD_AUDIO
W/AudioManagerAndroid: No audio device will be available for recording
E/chromium: [ERROR:web_contents_delegate.cc(178)] WebContentsDelegate::CheckMediaAccessPermission: Not supported.
E/chromium: [ERROR:web_contents_delegate.cc(178)] WebContentsDelegate::CheckMediaAccessPermission: Not supported.
W/AudioManagerAndroid: Requires MODIFY_AUDIO_SETTINGS and RECORD_AUDIO
W/AudioManagerAndroid: No audio device will be available for recording
D/ChromiumCameraInfo: Camera enumerated: front
Run Code Online (Sandbox Code Playgroud)

在真实设备上测试,Android 5.1.1

android android-webview webrtc android-permissions webviewchromium

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

OpenCV线/标尺检测

我正试图检测图像上的标尺,我将按照下一个过程:

1)准备图像(模糊,Canny等)

2)检测线条

3)准备一组平行线

所以,我有一个图像: 在此输入图像描述

该应用程序转换为: 在此输入图像描述

接下来我尝试了HoughLinesP方法,看起来我不能在我的情况下应用它,因为我不知道线的角度,所以找不到标尺垂直线,但发现水平(例如)和每个标尺线由很多细线,这将是一个需要处理的问题: 在此输入图像描述

代码:

std::vector<cv::Vec4i> lines_std;
cv::HoughLinesP( grayMat, lines_std, 1, CV_PI/90,  50, 10, 0 );

// drawing lines (with random color)
for( size_t i = 0; i < lines_std.size(); i++ )
{
    cv::line( originalMat, cv::Point(lines_std[i][0], lines_std[i][1]),
             cv::Point(lines_std[i][2], lines_std[i][3]), cv::Scalar(arc4random_uniform(155)+100,
                                                             arc4random_uniform(155)+100,
                                                             arc4random_uniform(155)+100), 1);
}
Run Code Online (Sandbox Code Playgroud)

我也尝试了LineSegmentDetector,并且得到了更接近我期望的结果: 在此输入图像描述

码:

vector<Vec4f> lines_std;
Ptr<LineSegmentDetector> ls = createLineSegmentDetector(LSD_REFINE_NONE);
ls->detect(grayMat, lines_std);
Run Code Online (Sandbox Code Playgroud)

但在这里我遇到了一些问题(并且看起来无法自定义createLineSegmentDetector):并非所有线路都被检测到;线路检测不在中心但在侧面检测,有时仅在左侧或右侧,但我需要获得中心粗线,因为这将在下一个计算中使用.

那么,找到所有线条的正确方法是什么(每条线只有一次在粗线的中心)?

更新

尝试过HoughLines:

矢量线;

cv::HoughLines(grayMat, lines, 1, CV_PI/90, 100 , 100, 0 …
Run Code Online (Sandbox Code Playgroud)

opencv objective-c++ ios opencv3.0 opencv3.1

10
推荐指数
1
解决办法
1018
查看次数

谷歌玩游戏服务错误代码400

有一个应用程序使用游戏服务,但由于某种原因它停止工作.它看起来有些时候我可以成功登录,但通常 - 没有.如果我检查了API流量,那么大约有10%的响应代码= 200,其他 - 404.

得到404的方法:

  • games.applications.played
  • games.events.record

当我试图检查日志中的错误时,我看到:

11705-13707/com.google.android.gms W/GamesServiceBroker: Client connected with SDK 12171000, Services 11975436, and Games 54390036
11705-9262/com.google.android.gms E/BoundService: No such BoundService for action: com.google.android.gms.auth.APP_CERT
11705-9262/com.google.android.gms E/BoundService: No such BoundService for action: com.google.android.gms.auth.APP_CERT
691-778/system_process E/PROXIMITY: ProximitySensor: unknown event (type=3, code=0)
8876-8890/com.agminstruments.drumpadmachine V/FA: Inactivity, disconnecting from the service
691-778/system_process E/PROXIMITY: ProximitySensor: unknown event (type=3, code=0)
2254-2269/? I/PerfService: PerfServiceNative_getPackName
11705-16860/com.google.android.gms E/Volley: [3966] BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/games/v1/players/me?language=ru-RU
11705-9262/com.google.android.gms E/PlayerAgent: Unable to load player g08394879143000804289
11705-9262/com.google.android.gms …
Run Code Online (Sandbox Code Playgroud)

android google-api google-play-services google-play-games

8
推荐指数
1
解决办法
2162
查看次数

视图绑定无权访问片段

我有一个活动及其ConstraintLayout片段:

<androidx.constraintlayout.widget.ConstraintLayout 
 ...attributes....
>
  <fragment
     android:id="@+id/containerView"
     app:navGraph="@navigation/some_navigation"
     ...other attributes...
   />

  ...other views...
Run Code Online (Sandbox Code Playgroud)

我在活动代码中使用视图绑定:

  binding = ActivityMainBinding.inflate(layoutInflater)
Run Code Online (Sandbox Code Playgroud)

这里的问题是我无法访问binding.containerView. 万一fragment我应该使用findViewById

android android-fragments android-viewbinding

7
推荐指数
1
解决办法
2046
查看次数

Android 到 Slack 共享问题

我发现共享短信到 slack 的问题,这里是简单的代码:

String content = "500 wert wert wert wert wert wert ewrt wert ewr tiwert uiweryt weuryt werytuiweyrt yweuritiuwertywerui twerytu weuirty uwerytuweurityuiwer tuiwery tuiweryt uiwerytui weryt iwerytiuweyrtuiweyrt weuyrtui werytui ewryti weryt uiweyrt ewrt uiewryt uiweryt uiewryt iuewryt iuert wueiryti werutiu weryt yuwiert wert wert wert wert wert werthwer tiwerituiwer tuiewrutywueirt wurtuiwret yweruit uiwery tuiwyertiu weyrut iuwerytui weruit wert wert r wert wert wert wert wert ewryety wert ret ret er tetewqwert" ;
final Intent sendIntent = new Intent(); …
Run Code Online (Sandbox Code Playgroud)

android android-intent slack-api slack

5
推荐指数
0
解决办法
536
查看次数

项目未与Gradle关联

我正在尝试运行Google Firebase示例,但是在打开gradle文件时出现“项目未与Gradle链接”错误。另外,文件仅在“ project-veiw”中可见。看起来是因为projet使用gradle.kts。我需要如何进行设置才能使项目正常运行?

在此处输入图片说明

android gradle kotlin android-studio android-gradle-plugin

3
推荐指数
2
解决办法
2541
查看次数

将通讯录另存为“电话联系人”

有没有办法以编程方式将联系人添加到内部电话通讯录中作为“电话联系人”?

我试过了:

list.add(ContentProviderOperation
                .newInsert(ContactsContract.RawContacts.CONTENT_URI)
                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
                .build());
Run Code Online (Sandbox Code Playgroud)

使用此参数,联系人成功保存到手机,但如果我将过滤器设置为“仅显示手机联系人” - 不会显示创建的联系人。顺便说一句,我读过nulltype 的联系人可能会丢失干燥帐户同步(不记得完整的案​​例)

然后我尝试从现有的电话联系人中检索ACCOUNT_TYPEACCOUNT_NAME获取PhoneLocal Phone Account字符串,但是当我尝试使用相同的参数保存联系人时:

list.add(ContentProviderOperation
                .newInsert(ContactsContract.RawContacts.CONTENT_URI)
                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "Phone")
                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "Local Phone Account")
                .build());
Run Code Online (Sandbox Code Playgroud)

结果与nulltype的第一种情况相同。

是否有任何常量(或者应该是另一种方式)来保存“电话联系人”等数据?

android contactscontract rawcontacts android-contacts

1
推荐指数
1
解决办法
976
查看次数

JSON模型避免了项目的异常

我试图解析JSONObject并将其保存到自定义模型.我不能确定所有节点都在JSONObject中,所以我检查每个项目:

    try {
        object.setId(jsonObject.getInt(ID));
    } catch (JSONException e) {}

    try {
        object.setParentId(jsonObject.getInt(PARENT_ID));
    } catch (JSONException e) {}

    try {
        object.setIsActive(jsonObject.getBoolean(IS_ACTIVE));
    } catch (JSONException e) {}

   .... and ect.
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以避免这么多尝试\捕捉?

java android json

0
推荐指数
1
解决办法
38
查看次数