精华内容
下载资源
问答
  • 首先在Xcode中新建.h文件,将以下代码复制进去//// myUILabel.h////// Created by yexiaozi_007 on 3/4/13.// Copyright (c) 2013 yexiaozi_007. All rights reserved.//#import typedef enum{VerticalAlignmentTop ...

    首先在Xcode中新建.h文件,将以下代码复制进去

    //

    // myUILabel.h

    //

    //

    // Created by yexiaozi_007 on 3/4/13.

    // Copyright (c) 2013 yexiaozi_007. All rights reserved.

    //

    #import

    typedef enum

    {

    VerticalAlignmentTop = 0, // default

    VerticalAlignmentMiddle,

    VerticalAlignmentBottom,

    } VerticalAlignment;

    @interface myUILabel : UILabel

    {

    @private

    VerticalAlignment _verticalAlignment;

    }

    @property (nonatomic) VerticalAlignment verticalAlignment;

    @end

    再新建一个.m文件,拷入以下代码

    //

    // myUILabel.m

    //

    //

    // Created by yexiaozi_007 on 3/4/13.

    // Copyright (c) 2013 yexiaozi_007. All rights reserved.

    //

    #import "myUILabel.h"

    @implementation myUILabel

    @synthesize verticalAlignment = verticalAlignment_;

    - (id)initWithFrame:(CGRect)frame {

    if (self = [super initWithFrame:frame]) {

    self.verticalAlignment = VerticalAlignmentMiddle;

    }

    return self;

    }

    - (void)setVerticalAlignment:(VerticalAlignment)verticalAlignment {

    verticalAlignment_ = verticalAlignment;

    [self setNeedsDisplay];

    }

    - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines {

    CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];

    switch (self.verticalAlignment) {

    case VerticalAlignmentTop:

    textRect.origin.y = bounds.origin.y;

    break;

    case VerticalAlignmentBottom:

    textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height;

    break;

    case VerticalAlignmentMiddle:

    // Fall through.

    default:

    textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0;

    }

    return textRect;

    }

    -(void)drawTextInRect:(CGRect)requestedRect {

    CGRect actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines];

    [super drawTextInRect:actualRect];

    }

    @end

    如果这是你导入的第一个.m文件Xcode会提示你要不要创建Bridging-Header,选Ok

    在新创建的Bridging-Header文件里拷入下方代码

    #import "myUILabel.h"

    然后打开你的StoryBoard,点选你想要更改对其方式的Label,将其Class改为myUILabel,示意图如下

    c8be1f5aa4fd07aebd9d550ca7dc57bb.png

    然后右键拖动Label或者按住Command键左键拖动连线到Label所在的父View的Class中生成Outlet,如果之前已经连线好,则改完Custom Class后,将连线生成代码中的UILabel改为myUILabel,示意图如下

    74f4ea4919aa1c814f4481e0730f73e7.png

    然后就可以调用该label的类方法

    label.verticalAlignment = VerticalAlignmentBottom

    按上方代码可以实现居下对其,居中 居上 分别将代码中的Bottom改为Middle和Top,默认为居上

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    展开全文
  • STM32环境实现的智能家居系统,完整项目代码
  • 1、空调控制模块 信息显示 显示当前室内温度 自动控制 设置空调在某温度自动开、关  2、风扇控制模块 状态显示 风扇开、关 自动控制 设置风扇的档数 3、灯光控制模块 状态控制 灯光的开/关控制 亮度 正常、节能...
  • 5行代码、分分钟实现的库——PixelLib,了解一下。当然,如此好用的项目,开源是必须的。为什么要用到图像分割?虽然计算机视觉研究工作者,会经常接触图像分割的问题,但是我们还是需要对其做“赘述”(方便初学者...
    本文来自量子位

    图像分割,作为计算机视觉的基础,是图像理解的重要组成部分,也是图像处理的难点之一。

    那么,如何优雅且体面的图像分割?

    5行代码、分分钟实现的库——PixelLib,了解一下。

    7ee18107c5a6b78c659bf3fe926f0ab8.png

    当然,如此好用的项目,开源是必须的。

    为什么要用到图像分割?

    虽然计算机视觉研究工作者,会经常接触图像分割的问题,但是我们还是需要对其做下“赘述”(方便初学者)

    我们都知道每个图像都是有一组像素值组成。简单来说,图像分割就是在像素级上,对图像进行分类的任务。

    图像分割中使用的一些“独门秘技”,使它可以处理一些关键的计算机视觉任务。主要分为2类:

    • 语义分割:就是把图像中每个像素赋予一个类别标签,用不同的颜色来表示。

    • 实例分割:它不需要对每个像素进行标记,它只需要找到感兴趣物体的边缘轮廓就行。

    它的身影也经常会出现在比较重要的场景中:

    • 无人驾驶汽车视觉系统,可以有效的理解道路场景。

    • 医疗图像分割,可以帮助医生进行诊断测试。

    • 卫星图像分析,等等。

    所以,图像分割技术的应用还是非常重要的。

    接下来,我们就直奔主题,开始了解一下PixelLib,这个神奇又好用的库。

    快速安装PixelLib

    PixelLib这个库可以非常简单的实现图像分割——5行代码就可以实现语义分割和实例分割。

    老规矩,先介绍一下安装环境

    安装最新版本的TensorFlow、Pillow、OpenCV-Python、scikit-image和PixelLib:

    pip3 install tensorflow
    pip3 install pillow
    pip3 install opencv-python
    pip3 install scikit-image
    pip3 install pixellib

    PixelLib实现语义分割

    PixelLib在执行语义分割任务时,采用的是Deeplabv3+框架,以及在pascalvoc上预训练的Xception模型。

    用在pascalvoc上预训练的Xception模型执行语义分割:

    import pixellib
    from pixellib.semantic import semantic_segmentation
    segment_image = semantic_segmentation()
    segment_image.load_pascalvoc_model(“deeplabv3_xception_tf_dim_ordering_tf_kernels.h5”)
    segment_image.segmentAsPascalvoc(“path_to_image”, output_image_name = “path_to_output_image”)

    让我们看一下每行代码:

    import pixellib
    from pixellib.semantic import semantic_segmentation

    #created an instance of semantic segmentation class
    segment_image = semantic_segmentation()

    用于执行语义分割的类,是从pixellib导入的,创建了一个类的实例。

    segment_image.load_pascalvoc_model(“deeplabv3_xception_tf_dim_ordering_tf_kernels.h5”)

    调用函数来加载在pascal voc上训练的xception模型(xception模型可以从文末传送门链接处下载)

    segment_image.segmentAsPascalvoc(“path_to_image”, output_image_name = “path_to_output_image”)

    这是对图像进行分割的代码行,这个函数包含了两个参数:

    • path_to_image:图像被分割的路径。

    • path_to_output_image:保存输出图像的路径,图像将被保存在你当前的工作目录中。

    接下来,上图,实战

    图像文件命名为:sample1.jpg,如下图所示。

    dfa7a062fd34781839e13144b43bd38f.png

    执行代码如下:

    import pixellib
    from pixellib.semantic import semantic_segmentation
    segment_image = semantic_segmentation()
    segment_image.load_pascalvoc_model(“deeplabv3_xception_tf_dim_ordering_tf_kernels.h5”)
    segment_image.segmentAsPascalvoc(“sample1.jpg”, output_image_name = “image_new.jpg”)

    9acd7a5464c4f2307e7c79ac43401b2e.png

    可以看到,在执行代码后,保存的图像中,所有对象都被分割了。

    也可以对代码稍作修改,获取一张带有目标对象分割重叠(segmentation overlay)的图像。

    segment_image.segmentAsPascalvoc(“sample1.jpg”, output_image_name = “image_new.jpg”, overlay = True)

    添加了一个额外的参数,并设置为True,就生成了带有分隔叠加的图像。

    4039b6027d5d8a08d86df48c94d6cd41.png

    可以通过修改下面的代码,来检查执行分割所需的推理时间。

    import pixellib
    from pixellib.semantic import semantic_segmentation
    import time
    segment_image = semantic_segmentation()
    segment_image.load_pascalvoc_model(“pascal.h5”)
    start = time.time()
    segment_image.segmentAsPascalvoc(“sample1.jpg”, output_image_name= “image_new.jpg”)
    end = time.time()
    print(f”Inference Time: {end-start:.2f}seconds”)

    输出如下:

    Inference Time: 8.19seconds

    可以看到,在图像上执行语义分割,只用了8.19秒。

    这个xception模型是用pascalvoc数据集训练的,有20个常用对象类别。

    对象及其相应的color map如下所示:

    26950771063a7601a2f2cd5c41d3e1aa.png

    PixelLib实现实例分割

    虽然语义分割的结果看起来还不错,但在图像分割的某些特定任务上,可能就不太理想。

    在语义分割中,相同类别的对象被赋予相同的colormap,因此语义分割可能无法提供特别充分的图像信息。

    于是,便诞生了实例分割——同一类别的对象被赋予不同的colormap。

    PixelLib在执行实例分割时,基于的框架是Mask RCNN,代码如下:

    import pixellib
    from pixellib.instance import instance_segmentation
    segment_image = instance_segmentation()
    segment_image.load_model(“mask_rcnn_coco.h5”)
    segment_image.segmentImage(“path_to_image”, output_image_name = “output_image_path”)

    同样,我们先来拆解一下每行代码。

    import pixellib
    from pixellib.instance import instance_segmentation
    segment_image = instance_segmentation()

    导入了用于执行实例分割的类,创建了该类的一个实例。

    segment_image.load_model(“mask_rcnn_coco.h5”)

    这是加载 Mask RCNN 模型来执行实例分割的代码(Mask RCNN模型可以从文末传送门链接处下载)

    segment_image.segmentImage(“path_to_image”, output_image_name = “output_image_path”)

    这是对图像进行实例分割的代码,它需要两个参数:

    • path_to_image:模型所要预测图像的路径。

    • output_image_name:保存分割结果的路径,将被保存在当前的工作目录中。

    上图,实战第二弹!

    图像文件命名为:sample2.jpg,如下图所示。

    4a6128e1e6dd0f97436c47ce03b9dc77.png

    执行代码如下:

    import pixellib
    from pixellib.instance import instance_segmentation
    segment_image = instance_segmentation()
    segment_image.load_model(“mask_rcnn_coco.h5”)
    segment_image.segmentImage(“sample2.jpg”, output_image_name = “image_new.jpg”)

    f18b9cd352e8f864c41fc074ff16826e.png

    上图便是保存到目录的图片,现在可以看到语义分割和实例分割之间的明显区别——在实例分割中,同一类别的所有对象,都被赋予了不同的colormap。

    若是想用边界框(bounding box)来实现分割,可以对代码稍作修改:

    segment_image.segmentImage(“sample2.jpg”, output_image_name = “image_new.jpg”, show_bboxes = True)

    这样,就可以得到一个包含分割蒙版和边界框的保存图像。

    7a31345a16ff55a921006093240df7a0.png

    同样的,也可以通过代码查询实例分割的推理时间:

    import pixellib
    from pixellib.instance import instance_segmentation
    import time
    segment_image = instance_segmentation()
    segment_image.load_model(“mask_rcnn_coco.h5”)
    start = time.time()
    segment_image.segmentImage(“former.jpg”, output_image_name= “image_new.jpg”)
    end = time.time()
    print(f”Inference Time: {end-start:.2f}seconds”)

    输出结果如下:

    Inference Time: 12.55 seconds

    可以看到,在图像上执行实例分割,需要12.55秒的时间。

    最后,奉上项目、模型下载地址,快去试试吧~

    传送门

    PixelLib项目地址:
    https://github.com/ayoolaolafenwa/PixelLib

    xception模型下载地址:
    https://github.com/bonlime/keras-deeplab-v3-plus/releases/download/1.1/deeplabv3_xception_tf_dim_ordering_tf_kernels.h5

    Mask RCNN模型下载地址:
    https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5

    1f16825b461fa84b01c1bd81e8508c8b.png

    展开全文
  • 项目背景:项目从另外一个离职同事接受过来的,做为项目经理兼架构师负责管理当前项目并负责带领团队优化项目及迭代更新。 问题描述:项目每次迭代后运行一段时间就发现cpu持续飙高,每次飙高到app卡的时候就是...
    展开全文
  • jQuery弹出窗口完整代码,可以实现窗口居中,居左,右显示,比较不错,需要的朋友可以参考
  • 传感器模块 远程监控模块 socket模块等
  • 三行代码实现上下居中 position: relative;top: 50%;transform: translateY(-50%); 效果如下: 代码: <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title...

    三行代码实现上下居中

    position: relative;
    top: 50%;
    transform: translateY(-50%);

    效果如下:
     
    代码:

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title>css123</title>
    <style>
    body {
    background: #2ae0bb;
    }
    .box {
    width: 40%;
    height: 500px;
    background: #008800;
    }
    .text {
    width: 40%;
    height: 200px;
    background: #e0e0e0;
    position: relative;
    top: 50%;
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    }
    .text span{
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    background: #18aa8c;
    }

    </style>
    </head>
    <body>
    <div class="box">
    <div class="text">
    <span>这是一个居中元素块。</span>
    </div>
    </div>
    <div class="pool">
    <div class="text-dec">
    <span>Look!I'm here.while just you know.</span>
    </div>
    </div>

    </body>
    </html>



     
    div宽度为百分比,想让高度和宽度一样,即让div为正方形实现方法
    width: 20%;
    height: 0;
    padding-bottom: 20%;
    效果图:
    代码:
     

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title>square</title>
    <style>
    body {
    background: #2ae0bb;
    }
    .aa {
    width: 20%;
    height: 0;
    padding-bottom: 20%;
    background: #095c05;
    margin: 0 auto;
    }
    .aa .cc{
    position: relative;
    top: 50%;
    transform: translateY(50%);
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    width: 18%;
    height: 0;
    padding-bottom: 18%;
    background: #E6E6E6;
    margin: 0 auto;
    }

    </style>
    </head>
    <body>
    <div class="aa">
    <div class="cc"></div>
    </div>

    </body>
    </html>

     
     

     

    转载于:https://www.cnblogs.com/xinxinmifan/p/5394240.html

    展开全文
  • 在之前的书稿中,我并没有非常详细的讲解场景与自动化,但是经过一些...目前市场上大部分的智能家居系统,都是依靠“场景”和“自动化”这两个功能来完成绝大部分的功能,所以当前情况,日常使用智能家居,很重要...
  • 大型装饰建材家居门户信息网用户中心招商信息管理页新增产品排序功能... 后台目录: webadmin/admin_login.htm 帐号:admin 密码:cnyy.net.cn 顶部翻动广告链接管理,根目录的 MyFlash.js,可以用记事本打开修改连接!
  • 首先在Xcode中新建.h文件,将下面代码复制进去 // // myUILabel.h // // // Created by yexiaozi_007 on 3/4/13. // Copyright (c) 2013 yexiaozi_007. All rights reserved. // #import &lt;UIKit/UIKit.h...
  • 主要给大家介绍了关于iOS中UILabel如何设置居上对齐、居中对齐、居下对齐及文字置顶显示效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来...
  • 【配置】在虚拟机UbuntuNFS网络文件系统建立 《ok6410Qt移植百科全书》 【配置】QT&QWT&sqlite3安装配置 这中间出现问题可查阅 【调试】ARMQT移植环境搭建问题---补充《ok6410Qt移植百科全书》 ...
  • 藏在正则表达式里的陷阱,一个正则表达式导致CPU 利用率高不 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能...
  • 今天来学习RelativeLayout布局,新建RelativeActivity,并且打开布局更改根布局如下<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=...
  • CPU 占用高不

    2021-01-11 05:29:55
    今日进行代码漏洞扫描,指标如下: <pre><code> 2个并发请求 250ms请求延迟 </code></pre> <p>1、持续5分钟后,系统4核CPU全部占满, 2、7分钟后,应用服务响应变慢, 3、扫描...
  • 我以 vue 项目为例,演示 css 要怎么写: 代码: <template> <div class="app"> <div class="appContainer"> <Roof></Roof> <router-view></router-view> </...
  • 通过对温度传感器,无线模块的优化选择,实现单片机与PC 机通过高速USB 接口进行通信及对上位机代码的优化实现本系统的实时监控功能, 同时还要考虑的是温度传感器的各个参数,无线模块的参数,以及硬件电路的优化...
  • 整个的代码如下: <div class="row"> <div class="card mb-3" style="width: 100%;"> <div class="row no-gutters"> <div class="...
  • 目录一、前言二、代码有毒!1. 方法命名2. 最佳排序3. 有点烧脑4. 迷之求和5. 花里胡哨6. 数字判断7. 代码健壮8. 性能优化9. 无用日志10. 耗时遍历三、总结一、前言学过的代码记不住?...架构:三的格局叫...
  • CPU高不原因之一

    2010-09-07 15:39:00
    在写程序时经常使用while、for等循环,循环内判断一个条件为否时一般都直接continue,然后这样往往会导致cpu使用率高不,做了个简单测试,代码如下。#include "stdafx.h" #include int main(int argc, char* ...
  • 在一个服务器的集群上面,服务器的CPU长时间高不,响应的时间也一直很慢,即使扩容了服务器CPU的下降效果也不是很明显。 对于CPU过高的原因,可以总结到以下原因: 太多的循环或者死循环 加载了过多...
  • 前段时间由于工作需要做了一个视频直播/智能家居类的应用。算是对iOS音视频专栏中流媒体处理做了一次小结。这里想把整个开发流程纪录下来,...下面开始先了解整个软件的架构。 前端我们在IOS audio&video ...
  • 握草,你竟然在代码毒!

    千次阅读 2020-09-07 09:35:21
    作者:小傅哥 ... 沉淀、分享、成长,让自己和...架构:三的格局叫MVC,四的格局叫DDD! 理论:系统结构设计定的好,有点bug没问题,能改。这就是茅坑跟坐便的区别。 除了有点味道以外,这回是不记住了,我们编程写代
  • 通过重写UILable的方法来实现居上对齐,直接上代码 // // myUILabel.h // // // Created by yexiaozi_007 on 3/4/13. // Copyright (c) 2013 yexiaozi_007. All rights reserved. // #import typedef ...
  • WebBrowser 类使用户可以在窗体中导航网页,下面我们来看在开发中碰到WebBrowser控件会导致应用程序占用内存高不问题解决方法. 今天发现刚写的WinForm应用程序占用内存不正常,经分析测试发现是由于多次创建...
  • 架构:三的格局叫MVC,四的格局叫DDD! 理论:系统结构设计定的好,有点bug没问题,能改。这就是茅坑跟坐便的区别。 除了有点味道以外,这回是不记住了,我们编程写代码的过程和我们日常生活的例子,往往都是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,306
精华内容 522
关键字:

居下代码