小编San*_*eep的帖子

小圆圈的MATLAB图像处理

我的图像看起来像这样:

瓶子

我有一个任务,我应该围绕他们的开口圈出所有的瓶子.我创建了一个简单的算法并开始工作.我的算法如下:

  • 阈值原始图像
  • 做一些形态开放
  • 填空空洞
  • 使用区域道具分离图像的部分,使得仅选择与瓶口相当的区域.
  • 找到每个的质心,并在每个瓶子周围绘制圆圈.

我根据上面的算法做了,但我有一些图像,我画了一个圆圈.这是因为我选择了该区域,因为瓶口区域和剩余噪音几乎相同.所以我得到了这样一个数字.

应用于图像的处理如下所示:

在此输入图像描述

在原始图像上绘制圆圈后,我的最终图像如下:

在此输入图像描述

我想我可以处理额外的圆圈,也就是说,因为图像的某些白色部分仍然如下图2所示.这可以使用区域偏差来过滤掉.这是一个好主意还是有其他方法吗?我如何处理玻璃后面的其他瓶子并选择它们?

matlab image-processing

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

如何立即用第二个吐司替换当前的吐司而不等待当前的吐司完成?

我有很多按钮.点击其中的每一个我都会显示一个Toast.但是当一个toast加载并在视图中显示时,单击另一个按钮并且在显示的那个完成之前不会显示toast.

所以,我想找出一种方法来检测当前上下文中是否显示吐司.有没有办法知道是否正在显示吐司,以便我可以取消它并显示一个新的.

android android-layout

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

子类化models.Manager

我认为对该models.manager对象get_query_set进行子类化并覆盖该方法或仅在子类中创建一个新方法并使用该方法没有区别.因为我从django书中取了例子;

class MaleManager(models.Manager):
    def get_query_set(self):
        return super(MaleManager, self).get_query_set().filter(sex='M')
class FemaleManager(models.Manager):
    def get_query_set(self):
        return super(FemaleManager, self).get_query_set().filter(sex='F')
class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    sex = models.CharField(max_length=1, choices=(('M', 'Male'), ('F', 'Female')))
    people = models.Manager()
    men = MaleManager()
    women = FemaleManager()
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以用; Person.women.all()或者Person.men.all()取得所有男女模特对象.但是,我想可以实现类似的事情,而不是get_query_set简单地干掉这个方法;

class MaleManager(models.Manager):
    def get_male(self):
        return self.filter(sex='M')
class FemaleManager(models.Manager):
    def get_female(self):
        return  return self.filter(sex='F')
class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    sex = models.CharField(max_length=1, choices=(('M', 'Male'), ('F', 'Female')))
    people = …
Run Code Online (Sandbox Code Playgroud)

python django model django-models

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

KVO:如何在Swift中的observeValue(forKeyPath:...)中获取旧值/新值?

我创建了一个带.Old | .New选项的观察者.在handler方法中,我尝试在值之后获取,但编译器抱怨:'NSString'不能转换为'NSDictionaryIndex:NSObject,AnyObject

override func observeValueForKeyPath(keyPath: String!, ofObject object: AnyObject!, change: [NSObject : AnyObject]!, context: UnsafeMutablePointer<Void>) {

    let approvedOld = change[NSKeyValueChangeOldKey] as Bool
    let approvedNew = change[NSKeyValueChangeNewKey] as Bool
Run Code Online (Sandbox Code Playgroud)

key-value-observing swift

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

绘制一个移动的正弦波消除锯齿

我想以清晰和抗锯齿的方式绘制具有可变频率和可变幅度的移动正弦波.这怎么可能?

graphics cocoa-touch objective-c ios

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

具有三个手柄的贝塞尔曲线错位了控制点

我设法用 Raphael 库的示例绘制了四种不同的曲线。现在,我想创建一条带有多个手柄的曲线。如何在此示例中添加更多句柄。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Bezier curve</title>
            <style>
        #holder {
            height: 100%;
            left: 100%;
            margin: -100% 0 0 -100%;
            position: absolute;
            top: 100%;
            width: 100%;
        }
        </style>
        <script src='jquery.js'></script>
        <script src="raphael.js"></script>
        <script>
           $('document').ready(function () {
                var r = Raphael("holder", window.innerWidth, window.innerHeight)

                function curve(x, y, ax, ay, bx, by, zx, zy, color) {
                    var path = [["M", x, y], ["C", ax, ay, bx, by, zx, zy]],
                        path2 = [["M", x, y], ["L", ax, ay], ["M", …
Run Code Online (Sandbox Code Playgroud)

javascript jquery raphael

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

使用NSBundle加载我的资源

我想将我的资源,nib文件和本地化文件分成一个通用的可重用捆绑包.因此,我为我的ios应用程序创建了一个包,并使用构建阶段,复制包资源指定要包含在包中的资源.但是,现在如果我尝试加载捆绑包,我无法加载捆绑包.我尝试使用[NSBundle allBundles],数组只显示主应用程序包.

我还尝试枚举NSApplicationPath的目录,但是唯一可用的捆绑包是我的应用程序默认捆绑包.我想学习这种技术并利用它来分离我的资源.任何帮助和建议将不胜感激.谢谢

resources objective-c nsbundle ios

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

与dispatch_block崩溃

为了更好地理解块的行为,我一直试图理解这次崩溃背后的原因.我有一个非常简单的类来触发这个崩溃.

@implementation BlockCrashTest

- (void)doSomething
{
    dispatch_queue_t queue = dispatch_queue_create("com.queue.test", DISPATCH_QUEUE_SERIAL);

    __weak typeof(self) weakSelf = self;

    dispatch_block_t block = ^{

        __strong typeof(weakSelf) strongSelf = weakSelf;

        dispatch_group_t group = dispatch_group_create();

        dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);

        dispatch_group_enter(group);
        [strongSelf performSomethingAsync:^{
            dispatch_group_leave(group);
        }];

        if(dispatch_group_wait(group, time) != 0) {
            NSLog(@"group already finished");
        }
    };
    dispatch_async(queue, block);
}

- (void)performSomethingAsync:(void(^)(void))completion
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        sleep(5);
        completion();
    });
}

- (void)dealloc
{
    NSLog(@"released object");
}

@end
Run Code Online (Sandbox Code Playgroud)

现在,如果我分配类并简单地调用方法doSomething,

BlockCrashTest *someObject = [[BlockCrashTest alloc] init]; …
Run Code Online (Sandbox Code Playgroud)

block objective-c grand-central-dispatch ios objective-c-blocks

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

可选值上的 Swift KeyPath

如果我有

class Info {
    var name: String?
}

class User {
    var info: Info?
}

class WrappedClass {
    var user: User = User()
}


let nameKeyPath = \WrappedClass.user.info?.name //Gets me KeyPath
let referencedNameKeyPath = \WrappedClass.user.info!.name //Gets me ReferenceWritableKeyPath
Run Code Online (Sandbox Code Playgroud)

nameKeyPath给我一个KeyPath我以后不能用来修改名称值的,但是如果我强制解开它,我会得到一个ReferenceWritableKeyPath我想要的。

不幸的是referencedNameKeyPath,由于意外发现 nil,沿线使用nil 值预计会崩溃。

我的问题是有没有办法将 a 转换KeyPath为 aReferenceWritableKeyPath或以某种方式解开它?

ios swift swift4 swift5

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

在 Realm 中存储字符串数组

我在我的 iOS 应用程序中使用领域。在我的应用程序中,我制作了一个目标文件,其中有一些字符串变量,并且其中还有一个数组。这是我Object的领域课程,

class Reminder: Object {
  @objc dynamic var name = ""
  @objc dynamic var done = false
  @objc dynamic var namesArray = [String]()
}
Run Code Online (Sandbox Code Playgroud)

现在在我的 VC 中,我将一个数组传递给namesArray我的Object班级。

let names : [String] = ["Ali","Hammad","Hamza"]
let textFieldReminder = (alertVC.textFields?.first)! as UITextField
let reminderItem = Reminder()       // (8)
reminderItem.name = textFieldReminder.text!
reminderItem.done = false
reminderItem.namesArray = names

// We are adding the reminder to our database
try! self.realm.write({
            self.realm.add(reminderItem)  
Run Code Online (Sandbox Code Playgroud)

现在,当我运行应用程序时,应用程序崩溃并显示此错误消息,

Terminating app due to uncaught …
Run Code Online (Sandbox Code Playgroud)

realm ios swift

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