1.nbdԴ??
2.哪儿找,Photoshop版本历史,非常感谢
3.printf系列教程04_SWO打印输出配置,基于IAR『Terminal IO』
4.如何组建一个无盘工作站,具体步骤
5.云服务器和云虚拟主机有什么区别吗?
6.Opencv findcontours函数原理,以及python numpy实现
nbdԴ??
SWO(Serial Wire Output)串行线输出是单引脚、异步串行通信,适用于Cortex-M3/M4/M7内核,ios ipa 源码主要通过ITM(Instrumentation Trace Macrocell)模块实现。ITM模块包含个刺激端口,允许不同的软件输出数据到不同端口,便于调试主机将消息分开。其中,SWO输出与串行线查看器(SWV)配合使用,需要一根SWO引脚进行连接。
本文主要介绍基于Keil『Debug(printf)Viewer』的SWO打印输出配置,结合STM、ST-link和J-link工具进行配置。为了理解ITM模块的输出,需要了解TPIU(Trace Port Interface Unit)跟踪端口接口单元,它是SWO引脚配置的关键部分。在STMCubeMX工具中,通过Debug选项进行SWO引脚配置。
在Keil MDK-ARM中,通过配置跟踪Trace、设置CPU时钟和选择ITM端口实现SWO输出。若使用ST-Link或J-Link,需进行特定的配置步骤。ITM发送源码需要从核心源代码中获取,使用ITM_SendChar函数进行字符输出。修改ITM端口需调整源代码中对应的值,并确保已启用相应的ITM刺激端口。
为辅助学习,提供源码工程下载,包含STMF(HAL)_SWO和STMF(HAL)_SWO两个实例。下载链接在百度网盘,提取码为nbd3。请关注公众号以获取最新链接,源码仅供参考,可能不适用于所有实际项目。
本文旨在提供个人学习用的教程,内容由单人整理,可能存在错误。关注微信公众号『嵌入式专栏』可获取全系列教程。博客网址为strongerhuang.com,GitHub为github.com/EmbeddedDeve...,欢迎访问查看更多信息。
哪儿找,Photoshop版本历史,非常感谢
百度百科啊/link?url=CK8EunCYZrfbN4LU4ZmMkN3kDhOiRzv8JI_4dvcuWNBD_-7iSzvEqgDZcfoxP7yg
PhotoShop版本
年2月,Photoshop版本1.0.7正式发行,John Knoll也参与了一些插件的开发,第一个版本只有一个KB的软盘(Mac)。[1]
年6月,Adobe发布了Photoshop 2.0(代号Fast Eddy),提供了很多更新的工具,比如矢量编辑软件Illustrator,CMYK颜色以及Pen tool(钢笔工具)。最低内存需求从2MB增加到4MB,这对提高软件稳定性有非常大的影响,从这个版本开始Adobe内部开始使用代号,在年正式发行。
年,Kai Krause在年发布了Kai's Power工具,使Photoshop的可视化界面更加丰富。
年,驱动模块源码Adobe开发了支持Windows版本的Photoshop,代号为Brimstone,而Mac版本为 Merlin。这个版本增加了Palettes和-bit文件支持。2.5版本主要特性通常被公认为支持Windows。
年,Photoshop 3.0正式发布,代号是 Tiger Mountain,而全新的图层功能也在这个版本中崭露头角。这个功能具有革命性的创意:允许用户在不同视觉层面中处理,然后合并压制成一张。该版本的重要新功能是Layer,Mac版本在9月发行,而Windows版本在月发行。
年9月,Adobe Photoshop 4.0版本发行,主要改进是用户界面。Adobe在此时决定把Photoshop的用户界面和其他Adobe产品统一化,此外程序使用流程也有所改变。一些老用户对此有抵触,甚至一些用户到在线网站上面抗议。但经过一段时间使用以后他们还是接受了新改变;Adobe这时意识到Photoshop的重要性,他们决定把Photoshop版权全部买断。
年5月,AdobePhotoshop 5.0发布,代号Strange Cargo。版本5.0引入了History(历史)的概念,这和一般的Undo不同,在当时引起业界的欢呼。色彩管理也是5.0的一个新功能,尽管当时引起一些争议,此后被证明这是Photoshop历史上的一个重大改进。
年发行Adobe Photoshop 5.5,主要增加了支持Web功能和包含ImageReady2.0。
年9月,Adobe Photoshop 6.0发布代号Venus in Furs,经过改进, Photoshop与其他Adobe工具交换更为流畅,此外Photoshop 6.0引进了形状(Shape)这一新特性。图层风格和矢量图形也是Photoshop 6.0的两个特色。
年3月Adobe Photoshop 7.0版发布代号Liquid Sky。Photoshop 7.0版适时的增加了Healing Brush等修改工具,还有一些基本的数码相机功能如EXIF数据,文件浏览器等。
年Photoshop 7.0.1版发布,它加入了处理最高级别数码格式RAW(无损格式)的插件。
年月发行Adobe Photoshop CS(8.0),支持相机RAW2.x,Highlymodified"SliceTool",阴影/高光命令、颜色匹配命令、"镜头模糊"滤镜、实时柱状图,使用Safecast的DRM复制保护技术,支持JavaScript脚本语言及其他语言。
年4月Adobe Photoshop CS2发布,开发代号Space Monkey。Photoshop CS2是对数字图形编辑和创作专业工业标准的一次重要更新。它作为独立软件程序或Adobe Creative Suite 2的一个关键构件来发布。Photoshop CS2引入强大和精确的新标准,提供数字化的星际来袭源码图形创作和控制体验。新特性有:支持相机RAW3.x、智慧对象、图像扭曲、点恢复笔刷、红眼工具、镜头校正滤镜、智慧锐化、SmartGuides、消失点、改善-bitPowerPCG5Macintosh计算机运行MacOSX.4时的内存管理,支持高动态范围成像(HighDynamicRangeImaging)、改善图层选取(可选取多于一个图层)。
年,Adobe发布了一个开放的Beta版Photoshop Lightroom,这是一个巨大的专业图形管理数据库。
年4月,发行Adobe Photoshop CS3,可以使用于英特尔的麦金塔平台,增进对WindowsVista的支持、全新的用户界面、Feature additions to Adobe Camera RAW、快速选取工具、曲线、消失点、色版混合器、亮度和对比度、打印对话窗的改进,黑白转换调整,自动合并和自动混合,智慧(无损)滤镜,移动器材的图像支持,Improvements to cloning and healing,更完整的bit/HDR支持,快速启动。
年,Photoshop Lightroom 1.0正式发布。
年9月,发行Adobe Photoshop CS4,套装拥有一百多项创新,并特别注重简化工作流程、提高设计效率,Photoshop CS4支持基于内容的智能缩放,支持位操作系统、更大容量内存,基于OpenGL的GPGPU通用计算加速。
年,Adobe发布了基于闪存的Photoshop应用,提供有限的图像编辑和在线存储功能。
年,Adobe为Photoshop发布了iPhone(手机上网)版,从此PS登陆了手机平台。
年月7日,发行Photoshop Express版本,以免费的策略冲击移动手机市场手机版的photoshop可以做些简单的图像处理。特点:支持屏幕横向照片,重新设计了线上、编辑和上传工作流, 在一个工作流中按顺序处理多个照片的能力, 重新设计了管理,简化了相簿共享, 升级了程式图标和外观,sort c 源码查找和使用编辑器更加轻松; 同时向Photoshop和社交网站Facebook上传。
年月日,Adobe Photoshop CS5,加入了编辑→选择性粘贴→原位粘贴、编辑→填充、编辑→操控变形 ,画笔工具得到加强功能。[2]
年3月日发行Adobe Photoshop CS6Beta公开测试版,新特性有Photoshop CS6和Photoshop CS6 Extended中所有功能。新功能有内容识别修复,利用最新的内容识别技术更好地修复。另外,Photoshop采用了全新的用户界面,背景选用深色,以便用户更关注自己的。
年2月日,发布Adobe Photoshop v1.0.1版源代码。
年6月日,Adobe在MAX大会上推出了最新版本的Photoshop CC(CreativeCloud),新功能包括:相机防抖动功能、Camera RAW功能改进、图像提升采样、属性面板改进、Behance集成一集同步设置等。[3]
printf系列教程_SWO打印输出配置,基于IAR『Terminal IO』
本文由『strongerHuang』原创首发于微信公众号『嵌入式专栏』,并同步发布在他的个人网站 EmbeddedDevelop。本文主要讲解如何在基于IAR的『Terminal IO』中配置SWO打印输出,适用于Cortex-M3/M4/M7的STM开发。
SWD、SWO、SWV和ITM是一组用于调试的串行接口,其中SWO(串行线输出)是单线异步通信方式,通过Cortex-M系列的内核ITM模块实现。要使用SWO,首先确保你的STM MCU有相应的引脚,如Cortex-M3/M4/M7,而M0系列如STMF0、STML0和STMG0则不支持。
在STMCubeMX中,只需在Debug选项中配置SWO引脚。要实现在IAR EWARM的『Terminal IO』中输出,首先在Project选项中选择调试工具(ST-Link或J-Link),并配置相应的CPU时钟。进入调试模式后,进入SWO配置,设置时钟和使能ITM端口,以及PC采样。重定义代码时,将UART发送字符替换为ITM_SendChar函数,根据需要修改ITM端口号并确保相关刺激端口启用。
为了帮助理解,文章提供了两个示例源码工程:STMF(HAL)_SWO和STMF(HAL)_SWO,链接在百度网盘,提取码nbd3。请注意,链接可能需要关注公众号获取最新链接,源码仅供参考,可能不适用于所有项目。
最后,本文版权属于作者,vc mfc源码仅供学习使用。作者在strongerhuang.com和github.com/EmbeddedDeve...分享更多信息,关注微信公众号『strongerHuang』,随时获取更多嵌入式教程内容。
如何组建一个无盘工作站,具体步骤
无盘工作站构架指南2(5-)
5、运行Win?无盘工作站
你想用机运行Win吗?你想不买终端卡组建无盘Win网络吗?好了,请跟我来吧。根据本人长期的组网实践经验,总结出一套完整的无盘Win方案,给大家分享!
首先说说大致工作原理:
主要先通过Win远程无盘引导Win工作站,再利用Win终端服务和终端连网软件从无盘win中登陆到终端服务器上。
请看以下具体步骤:
一、硬件配置:
1.服务器:建议CPU PIII 以上、M内存,硬盘G以上(经济允许的话最好用SCSI)因为服务器是整个网络核心的核心,所以配置一定要好。
2.工作站:低配置的,即可。笔者这里是奔腾,8M内存,无硬盘。
二、安装步骤:
1.首先把服务器装好Win Server,并配置好所有硬件。
2.为window安装终端服务。
打开控制面版---添加/删除程序---添加/删除Windows组件--选中Windows终端服务确定。安装时要放入Win光盘.
3.在服务器上安装MetaFrame。Metaframe是citrix公司在Win下的终端服务器他比Win的终端服务更加强大,提供多种客户终端接入服务。
4.安装好Metafrmae后,开始制作终端客户安装软盘.
开始---程序---Metaframe tools---Ica client creator----Ica Client For win3x
5.为Win添加远程启动服务。由于Win已经不在支持远程启动服务。因此,我们考虑将NT4的远程启动服务移植到Win中。可到凌心之 家(www.lingxin-home.com)或我的主页(networld.8u8.com)去下载远程服务安装工具。
6.在Win下依次配一台Dos、win无盘站.方法与nt下一模一样,别告诉我你不会配置.不会的,以下就不用看了。
7.以无盘win启动工作站,把第4步制作的终端客户盘安装在无盘站上。
8.配置客户端。双击citrix图标,建立一个新连接,这里注意:要填好主机名(服务器名称),协议选择Netbios,的其它全部用他的默认就可以了。
9.建立连接完成后,双击刚才建立的连接,就出现梦寐以求的Win桌面了。你可以运行任何在服务器的软件了!
6、安装Linux无盘工作站
[文章导读]
其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。
[正文]
当年Novell下的无盘DOS工作站很是流行,后来又流行过Win无盘工作站,只是由于问题多多,后来微软自己停止了对无盘Windows的支持。随着Linux的日益流行,使用Linux的人越来越多,其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。
这个网络是一个小的局域网,有1台服务器和4台 Linux 无盘工作站,彼此之间用双绞线通过HUB连接,服务器的IP地址定为..0. ,名字是server ,5台无盘工作站的地址由服务器动态分配,地址范围从 ..0.1 到..0.4 ,名字分别是c1,c2, c3,c4,服务器和无盘工作站使用的都是NE 兼容网卡,无盘工作站使用的网卡上都安 装了BOOTROM 启动芯片,服务器操作系统安装的是 RedHat Linux 6.0 ,安装时选用定制安装,并安装了全部软件。
Linux的远程引导有两种方式,一是利用Bootp协议,有一个专门的项目EtherBoot 提供支持( ( or Mbit)
Other ISA cards
NE/NE support (NEW)
都设置为有效
Filesystems 该项目下面的Network File Systems子项目下面的
NFS filesystem support
Root file system on NFS (NEW)
都设置为有效
以上设置完成后,退出内核编译设置程序,会出现一个对话框:Do you wish to save your new kernel configuration?
然后执行 make dep && make bzImage 进行内核编译,这个过程得花一点时间,特别是如果计算机的速度不快的话,花的时间会更长一些。编译内核如果没有错误,会得到内核映象文件/usr/src/linux/arch/i/boot/bzImage ,将启动软盘插入计算机,执行下面的命令 mount -t vfat /dev/fd0 /mnt/floopy cp /usr/src/linux/arch/i/boot/bzImage /mnt/floppy umount /dev/fd0
好了,启动盘上的文件都准备齐全了,等会儿用它到Win环境下制作启动映象。
服务器设置
服务器端需要运行nfsd、dhcpd、mars_new等几个服务进程,这些软件在ReHat Linux 发行套件里都有,如果在安装 Linux 的时候选择全部安装,这些软件都会随着安装操作 系统而装好了,下面对这些软件进行设置,注意,下面的操作要以 root 身份进行。
1、 NFS 守护进程nfsd
首先要建立几个供无盘工作站使用的目录,并通过nfsd 导出,命令如下:
mkdir /tftpboot
然后编辑文件 /etc/hosts ,加入下面的内容
..0. server server.domain
..0.1 c1 c1.domain
..0.2 c2 c2.domain
..0.3 c3 c3.domain
..0.4 c4 c4.domain
第一台工作站的工作目录设置方法如下:
mkdir /tftpboot/..0.1
cd /tftpboot/..0.1
cp -a /bin .
cp -a /dev .
mknod dev/nd0 b 0
chmod dev/nd0
cp -a /etc .
cp -a /home .
cp -a /lib .
rm -rf lib/modules
cp -a /root .
cp -a /sbin .
cp -a /var .
mkdir proc
mkdir usr
mkdir tmp
chmod tmp
touch fastboot
chattr +i fastboot
cd etc
编辑文件 sysconfig/network-scripts/ifcfg-eth0
保留其中的
DEVICE=eth0
ONBOOT=yes
其余的行全部删除,然后增加一行
BOOTPROTO=dhcp
编辑文件 rc.d/rc.sysinit ,在文件最后加上两行
mount -t nfs server:/usr /usr
/usr/XR6/bin/xfs
编辑文件 fstab
保留其中的
none /proc proc defaults 0 0
其余的行全部删除,然后增加一行
server:/tftpboot/..0.1 / nfs defaults 1 1
其它工作站的工作目录设置方法就简单多了
cd /tftpboot
cp -a ..0.1 ..0.2
cp -a ..0.1 ..0.3
cp -a ..0.1 ..0.4
编辑文件 /etc/exports ,加入以下内容
/usr (ro,no_root_squash)
/tftpboot/..0.1 (rw,no_root_squash)
/tftpboot/..0.2 (rw,no_root_squash)
/tftpboot/..0.3 (rw,no_root_squash)
/tftpboot/..0.4 (rw,no_root_squash)
2、动态主机配置协议服务器 dpchd
检查一下文件/etc/dhcpd.leases是否存在,若不存在就用命令touch /etc/dhcpd.leases 创建一个,然后编辑文件 /etc/dhcpd.conf ,加入以下内容
subnet ..0.0 netmask ...0 {
range ..0.1 ..0.4;
}
3、NetWare 模拟器 marsw_nwe
编辑文件 /etc/nwserv.conf,找到下面的行
# 4 0x eth0 .3 1
将该行开头的'#'去掉,再找到
4 0x0 * .3 1
在该行开头加上'#'
制作启动映象
进入Win,将Win(早期的版本,可以用服务器安装方式安装)安装光盘的admin\nettools\netsetup\rplimage.exe 复制到硬盘,将启动软盘插入软驱,然后在纯MSDOS方式下执行 rplimage a: 就会得到启动映象 net$dos.sys,再将启动映象 net$dos.sys 复制到启动盘上(如果启动盘空间不够,可以先删除启动盘上的一些文件以留出空间)。
启动 Linux 服务器,以 root 用户登录,将启动软盘插入软驱,执行下面的命令 mount -t vfat /dev/fd0 /mnt/floppy cp /mnt/floppy/net\$dos.sys /var/mars_nwe\sys\login umount /dev/fd0 然后执行 setup ,移动光棒至 System services 选项回车,出现 Services 设置画面,将dhcpd,nfs,mars-nwe 都设为有效,退出 setup 程序,执行以下的命令以启动上述服务进程:
/etc/rc.d/rc3.d/*mars-nwe restart
/etc/rc.d/rc3.d/*dhcpd restart
/etc/rc.d/rc3.d/*nfs restart
下一次再启动服务器时,上述服务进程会自动执行。
至此,所有的设置工作全部完成了,联好网络随便打开一台无盘工作站,稍等一下,出现远程引导的信息,接着会启动 Win,接下来很快就会装载 Linux ,在一大堆 Linux 的启动信息之后如果看到 Linux 的登录提示,就说明远程启动成功了。
Linux 无盘工作站虽然运转起来了,但还有一个问题,就是交换的问题,因为Linux 是一个支持虚拟存储的操作系统,当机器内存不够时,Linux 就会把内存中暂时不用的数 据换出到交换设备上,等需要时再换回来,刚才我们没有设置交换区,在无盘工作站上用 free 命令就会发现交换区为零,如果无盘工作站内存较大,运行一些不大的程序,没有交换区还是可以的,但若运行大型程序就会出问题,下面介绍在服务器上设置交换区即远 程交换的方法。
对于2.1.版以前的内核,要实现远程交换可有点费事,得从网络上下载有关的补丁来修改内核代码,然后再编译内核映象。从2.1.版后的内核支持网络块设备,这样,实现远程交换就容易了。首先编译内核时要使 Network block device support 选项有效(刚才编译内核时就是这么作的),再从boot可供选用, etherboot对网卡型号有要求,支持的网卡种类不算很多,但对最常用的网卡如3c///b、NE//PCIne、Intel eepro等基本上都能支持;Netboot可以用ndis或pktdrv,这些文件一般在随卡附带的驱动盘上都有,但这仅限于网络启动,对网卡的要求首先是Linux能识别。
以下步骤所述适用于etherboot;
1. 展开etherboot,进入src-,编辑Config。有许多选项可以让你做多重启动、显示信息、询问口令之类的事情,这时你需要做的是用bootp代替dhcp,即在Config中定义-DNO_DHCP_SUPPORT设置。因为我们打算在服务器端用bootp,所以这是必须的,否则在启动时会因为未能寻找到dhcp server而启动不了。如果你准备在服务器端使用dhcp,那么这一步就不需要了。
2. make。对每种网卡都会生成两个文件 .rom和 .lzrom,后者是压缩过的。
3. 使用软盘启动验证所作的启动ROM没问题,假设你用的网卡是ne兼容的:
cat ../src/floppyload.bin ne.lzrom > /dev/fd0
如用软盘启动,系统能探测到你的网卡并发出bootp请求。如果一切OK,你就可以把ROM文件刻写到EPROM里了。
4. cd ../netboot*;make;make install。make如果出错,解决办法是把系统中的bcc改名,然后将gcc连接成bcc,再重新make。最后在系统中会增加一个程序mknbi-linux,这是用来处理linux内核的,在服务器端设置部分会讲它的用法。
客户端的工作完成了。
二、服务器端:
假设你的无盘工作站ip为.0.0.1; 机器名为dc1.subnet.net,另一台无盘工作站ip为.0.0.2,机器名为dc2.subnet.net, 服务器ip为.0.0.,名为server.subnet.net。
1. 修改/etc/hosts,增加dc1.subnet.net,dc2.subnet.net
2. 取得bootp-2.x.x,展开后注意把带的各种patch都打上。然后make; make install
3. 建立/etc/bootptab,如下:
global.prof:
:sm=...0:
:bf=/tftpboot/vmlinuz.nb:
dc1:tc=global.prof:ha=cd7a:ip=.0.0.1:
dc2:tc=global.prof:ha=e1:ip=.0.0.2:
ha用无盘工作站网卡的MAC地址代替。
4. 修改inetd.conf,去掉bootpd和tftpd的#号,如下:
tftp dgram udp wait root /usr/sbin/tcpd tftpd –s /tftpboot
bootps dgram udp wait root /usr/sbin/tcpd bootpd -i
kill –HUP `cat /var/run/inetd.pif`
5. 建立/tftpboot/.0.0.1,cd /tftpboot/.0.0.1,
(cd /; tar cpf – lib sbin bin var etc dev)| tar xpf –
mkdir usr; mkdir tmp; chmod tmp; mkdir home;mkdir root; makdir
proc; mkdir mnt
6. touch fastboot; chattr +i fastboot
(fstab 中 / 和 /usr 的最后一项设成0,也许不需要这一步了,但我没试过)
以下是一个shell script,可用于自动执行以上操作。
#!/bin/sh
if [ $# != 1 ]
then
echo Usage: $0 client-IP-addr
exit 1
fi
cd /
umask
mkdir -p /tftpboot/$1
# just make these ones
for d in home mnt proc tmp usr
do
mkdir /tftpboot/$1/$d
done
chmod /tftpboot/$1/tmp
touch /tftpboot/$1/fastboot
chattr +i /tftpboot/$1/fastboot
# copy these ones
(cd /; tar cpf - bin lib sbin dev etc var) | (cd /tftpboot/$1; tar xpf -)
7. 删除var下一切不需要的东西, 减小空间。删除lib/modules下一切不需要的模块。
8. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,
etc/fstab,etc/conf.module
fstab中指明root在服务器server上,like this
server:/tftpboot/.0.0.1 / nfs default 0 0
server:/usr /usr nfs default 0 0
9. 配置etc/rc.d/rc3.d,关掉一切不需要的网络服务。
. 删除etc/rc.d/rc6.d/K?network。
. 修改etc/rc.d/rc.sysinit,寻找“mount –a –t nonfs,smbfs…"改成
“mount.–a –t nosmbfs…"
. mkdir /tftpboot/.0.0.2; cd /tftpboot/.0.0.2;
. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,
etc/fstab,etc/conf.module
. cd /etc; vi exports;
/usr dc*.subnet.net(ro)
/tftpboot/.0.0.1 dc1.subnet.net(rw,no_root_squash)
/tftpboot/.0.0.2 dc2.subnet.net(rw,no_root_squash)
exportfs –a
. 编译一个新内核,必须包含以下特性:
NFS filesystem 支持
Root on NFS 支持
Bootp 支持
无盘工作站所用的网卡型号支持
编译出新内核之后,用mknbi-linux处理,
mknbi-linux bzImage vmlinuz.nb
将vmlinuz.nb放在/tftpboot下即可。
至此,服务器端的工作就完成了。
注意事项:
1. 如果你打算在服务器端用dhcp,需要自己配置,参看dhcp的文档。
2. Rh6.1自带一个bootparamd,也应该能完成同样的工作,但在manual中语焉不详,不知该如何设置。
3. 服务器端 / 和 /usr 最好单独分区。
4. etherboot的文档上说对有些网卡比如PCI NE兼容网卡,可能需要调整Makefile中的vendor信息和ID信息,我还未试过。
启动你的无盘工作站,如一切操作无误的话,工作站则应该能启动起来。启动过程中如果有一些地方不顺利,可以在启动之后对无盘工作站上按一般方法进行设置。
希望以上的讲述能给读者有所帮助和启迪!
8、Linux无盘工作站架设实例
后面还有实例你自己看吧!
云服务器和云虚拟主机有什么区别吗?
1、划分的储存空间不同。ecs云服务器是在集群服务器上划分出来的独立的内存、硬盘、带宽等资源搭建而成的一个虚拟服务器,有独立的IP和带宽,可以根据需求安装各版本操作系统以及配置各种网站运行环境,有远程桌面连接东西,是完全独立的。而云虚拟主机是在服务器硬盘上划分出来的一部分存储空间,它共享的是服务器的IP和带宽,没有独立的资源和独立的操作系统,没有远程桌面功能,通常虚拟主机所支持的网站程序也是默认分配好的,没有办法由用户自己配置环境,功能相对单一。2、数据存储不同。云服务器的业内名称其实叫做计算单元。所谓计算单元,就是说这个服务器只能算是一个人的大脑,相当于普通电脑的CPU,里面的资源都是有限的。你要获得更好的性能,解决办法一是升级云服务器,二是将其它耗费计算单元资源的软件部署在对应的云服务上。例如数据库有专门的云数据库服务、静态网页和有专门的文件存储服务。
而且云服务器不是说就便宜了,相反会比一般的VPS都贵。为什么?因为它相对于来说,扩展比较方便。云服务器是网站做大了、有很高收入的时候一个不错的选择。
云服务器是云计算服务的重要组成部分,是面向各类互联网用户提供综合业务能力的服务平台。平台整合了传统意义上的互联网应用三大核心要素:计算、存储、网络,面向用户提供公用化的互联网基础设施服务。
云服务器平台的每个集群节点被部署在互联网的骨干数据中心,可独立提供计算、存储、在线备份、托管、带宽等互联网基础设施服务。
而云虚拟主机具有高度可用的云架构,将站点数据存放于云存储当中
Opencv findcontours函数原理,以及python numpy实现
OpenCV的Findcontours()函数原理来源于一篇名为《Topological Structural Analysis of Digitized Binary Images by Border Following》的论文。该论文详细介绍了算法的实现,并提供了算法的源代码。
在论文中,对于一些关键定义进行了阐述:
1. 轮廓点:在一个4-或8-邻域内,如果存在一个像素为0的点,则该点为轮廓点。
2. 连通区域的环绕:对于两个相邻的连通区域S1和S2,如果S1上任意一个点的四个方向都能到达S2,那么S2环绕S1。
3. 外轮廓和孔轮廓:外轮廓是指像素为1的连通域内被像素为0的连通域环绕的轮廓点,孔轮廓是指像素为0的连通区域被像素为1的连通区域环绕的轮廓点。
4. 父轮廓:定义了层级关系,例如,对于一个像素为1的连通区域S1和一个像素为0的连通区域S2,如果S2环绕S1,则S1的父轮廓为环绕S2的值为1的像素。
轮廓扫描过程中,从左到右、从上到下的顺序扫描,根据扫描到的边界起始点判断轮廓类型。找到起始点后,根据上一个轮廓的编号判断父轮廓。最后,通过border following找到该轮廓的所有点。
在实现过程中,需要定义输入,初始化NBD为1,LNBD为1。在每一行扫描开始时,LNBD重置为1。根据当前扫描到的像素值,不断更新当前点,并绕着该点逆时针旋转寻找下一点,并不断更新像素值。
在实现过程中,遇到了一个问题,即当像素左边和右边同时为0时,需要进行特殊处理。因为轮廓是逆时针寻找,所以可以通过寻找的方位判断该赋值NBD还是-NBD。具体实现可以参考代码。
修正后,结果与论文一致。有兴趣的朋友可以查看代码。
结果图展示了轮廓编号、frame边缘、子轮廓、父轮廓、轮廓开始索引和轮廓类型等信息。