首页 手机软件 正文

slic2.1 你的笔记本支持NVME SSD吗?硬改NVME及系统迁移攻略

你的笔记本支持NVME SSD吗?硬改NVME及系统迁移攻略

我特别喜欢摆弄新鲜玩意,啥没见过的东西给我摆弄下就满足了,但是这个爱好有个缺点就是烧钱,当然要来张大妈混混首晒金币啥的更烧钱,所以我老婆说我这是个病要治,

结果一治三年了都没啥好转迹象。我想都不用想,我如果不发大图,肯定有人要问我这些架子上的玩意。

平时捣鼓的DIY配件,其中很多玩意让我在张大妈混了不少篇精华。但是。。。。。。说多了都是泪,我现在都不敢看 。

平时捣鼓的网络,不过我准备再签一条宽带了,因为一旦捣鼓网络,女王就会发飙。

一台过气的THINKPAD X230加上扩展坞,配上一台THINKVISION LT2934Z就是我的工作平台。所以我媳妇控诉也不是没有道理,确实烧钱有点吃不住,所以我现在也和本地玩家互相交换一些配件来玩,混个张大妈精华首晒啥的,确实省钱很多。张大妈精华绝对有毒,一旦上瘾,根本停不下来,为了可持续的发展,和留住钱包里的银子,交换设备玩是最好的办法了。张大妈发文还有个好处就是可以遇到一些本地党,没事来唠唠嗑,聊聊感兴趣的那点事,一起交换设备玩玩新鲜感可以避免太烧钱,有时间也替本地朋友解决个升级配置,解决个死机黑屏兼容问题啥的,没事一起喝个酒啥的也挺好挺惬意的。最近有个本地大学的学生朋友遇到一个棘手的问题,本着有难题找老高的原则,直接一个电话就刷过来了,第一句话就说上次咸鱼收的两块INTEL DC S3500 800GB都成功在INTEL RMA换新了,成本价1300匀给我一块, 立刻点亮了我的激情,然后说他有个本子有个怪异的问题想给我看看怎么解决,这小子,我立马说成,叫中午直接把本子扔给我两天,特别嘱咐过来别吃饭,中午喝两口再说。

我真的发现大学生咸鱼守货真是无敌的存在,我自己没事也上去看看,就是守不到好货。这同学牛在咸鱼二手他有办法直接换新,一人一块仗义啊。

那么他遇到的问题也很奇怪了,他咸鱼以400元超低的价格收到了一块NVME M2 240GB SSD, ,但是没有任何厂家信息,疑似工程样板,也没有贴标,表面还是撕去标的胶印。问他怎么买到的,他说他还有技巧,看到金手指是一个凹槽的 2280长度的一般没跑就是NVME的,如果是两个凹槽的2280长度的那就是SATA AHCI通道的M2 SSD,还是很有一套的呀。

有玩过SSD的朋友应该都清楚想要让SSD发挥出真正实力的话要去BIOS里面把SATA控制器模式切换成AHCI,对SATA设备来说使用AHCI模式的确是正确的选择,从IDE切换成AHCI可获得更好的性能。但是现在最新存储接口M.2和U.2接口走的都是PCIE通道,对与PCI-E来说AHCI不是一个好的选择,想发挥其最佳性能就需要NVME的SSD。

我看了下,主控是群联PS5007主控,同OCZ RD400一样,是NVME主控,从版型来看同采用群联公版的宇瞻Z280一模一样,但是却没有宇瞻的贴标,我初步判断这应该是一款群联公版的SSD工程样板,缓存用的南亚256MB DDR3L,闪存颗粒用的64GB的东芝15nm MLC闪存4片,总容量256GB,但是OP了16GB之后实际可用容量240GB。但是他的笔记本上了这块SSD之后,说作为从盘的话WIN10直接系统里找不到设备,作为主盘启动盘的话死活无法安装操作系统,但是BIOS里可以认出盘,非常诡异。我说你这不是一会的事情,先丢下来,我来看看啥问题,其实不是一会也就是几个小时的事情,哎呀,好吧,其实我有点小私心好吧,设备留个两天能不烧钱混个张大妈也不错啊 。

他带来的笔记本是这个,一看这个标志我就明白了,是我曾经玩过的火影,我曾经玩过一台火影金钢T1就是这个标志。但是和T1的区别是,T1的这个标志是个信仰呼吸灯,这个本子是个印刷体。

从大小和重量来看,390mm x 269.5mm x 27.9mm,重量2.9kg,简单来说如果作为便携笔记本,偏重,作为游戏本来说,这个厚度和重量就算还好了。

一看到背后的双散热孔就让我明白了这应该是个游戏本。

左右散热孔隐约可见的铜制散热器

IO接口左:RJ45网口、USB2.0X2、SD卡槽X1,电脑锁

IO接口右:DC电源输入、HDMI、USB3.0X2,耳机麦克风合二为一

外壳材质我摸上去不太显档次,易沾染指纹,但手感还行,底部是一行三列的散热孔设计,三列之间穿插了2个放音喇叭,这个设计我很担心放在桌面上会不但会共振,还会影响音质的效果。被背壳来看,没有任何易损标,那么就意味着随意拆卸底部周围的几颗螺丝就可以任何拆解了,可能是我最近拆THINKPAD S5拆吐了血,看到这种设计就感觉好有亲切感。

这里的Subwoofe字样应该是确认这边是有超重低音喇叭或者低音炮,我醉了,设想如果有一排同学都趴在一长溜的课桌上睡觉,这本子往桌子上一放点击播放神曲,会不会一群人醒来就立即喊着地震往外冲。

品牌是火影的,型号是FIREYING V5。顺手百度了下

简单看了下配置还不弱,I7 6700HQ/8GB DDR4 2133/GTX960M 4GB DDR5/256GB M2 SSD/15.6寸 FHD TN雾面屏/802.11AC无线网卡+蓝牙4.0/千兆网卡/背光键盘/摄像头/双1W低音炮,你别说该有的还都有,配置看起来真挺黑涩会的,刚接到手说真心话挺想说这孩子4K多大洋买这个挺犯二糟蹋钱的,百度了一下之后还真就不敢乱说了。

开屏的风格让我想到了联想拯救者系列,这键盘布局,造型都有强烈的神似感。不管了,拆了再说。

直接茶几上下面底部的螺丝,底壳自动分离,SO EASY!

本子我真的拆够了,也拆腻了,基本这个格局一看就知道是全铜双涡轮双热管,CPU和GPU核心包括显存是全铜全覆。

出风口这个散热器下方有一排类似排阻一样的LED灯珠。

原配SSD和WIFI网卡在两个喇叭的下方

原配WIFI网卡是INTEL的3160NG,原配SSD是LITEON的PH4-8E256,主控是群联的PS3111,明显是SATA AHCI协议的M2 SSD,容量256GB,为了方便叙述,我把这个M2标识为M2-1。等等,这个SSD贴标下面的二维码看起来有点眼熟,

难道那咸鱼的NVME SSD 240GB也是LITEON的?还是说PH4-8E256也是群联公版的?所以有这个二维码,连PCB颜色都一模一样。

在另外一侧还有一个空的M2-2和SATA接口,一共两个M2,一个SATA接口。

我特地去找了一个技术规格看了下,硬盘这里明确红字说明支持NVME SSD的,但是又说其中一个M2支持PCIE 3.0X4且支持NVME,不管了直接NVME 240GB插上空的M2-2,结果开机非常的顺利,但是进去WIN10打开设备管理器竟然找不到我加进去的NVME SSD,符合这小子说的做从盘进去系统找不到盘。

结论是:

M2-1 LITEON PH4-8E256 SATA AHCI协议 OK!

M2-2 未知品牌群联PS5007 SSD NVME协议 fail!

唯一解释就是说M2-2不支持NVME,那么只有M2-1支持NVME了,拔掉LITEON PH4-8E256插入NVME SSD到M2-1试试。

按DEL一进入BIOS,发现既不是AMI也不是AWARD的BIOS,而是很少见的INSYDE H20的BIOS,NVME SSD认出来了,识别为PP2 GB240型号,有戏啊!

但是进去设置页面一看到,SATA MODE里只有AHCI和RAID可选,我顿时心凉了半截。

启动模式里面,Legacy和UEFI都支持的。

但是无论哪种启动模式,启动进去显示这个图,这说明INSYDE的UEFI V2.4版本已经识别出来NVME SSD了。

UEFI 2.4 Review, Part 8: NVMe Device Paths | 系微股份有限公司...This is the eighth part in a series examining in detail the changes made in the UEFI 2.4 specification. This time we focus on a series of related chanwww.insyde.com

在INSYDE 官网的UEFI V2.4预览中有这样一段话:

This is the eighth part in a series examining in detail the changes made in the UEFI 2.4 specification. This time we focus on a series of related changes to supporting the NVMe specification, which "defines an optimized register interface, command set and feature set for PCI Express (PCIe®)-based Solid-State Drives (SSDs)."Of course, if you want to boot from a device under UEFI, the standard mechanism is to write a driver that consumes the PCI I/O protocol and produces the Block I/O protocol. In fact, there is such a sample driver out on the tianocore.org EDK2 project repository (MdeModulePkg/Bus/Pci/NvmExpressDxe).

这明明就是INSYDE 的UEFI 2.4对NVME协议的SSD已经提供了完整的支持。

而在INTEL官网关于HM170笔记本芯片组的参数中也明确说明HM170可以有16组PCIE3.0X1通道可以自由整合

在I7 6700HQ的官方参数中也清楚说明CPU内置16组PCIE3.0X1可整合为1x16, 2x8, 1x8+2x4

等于说I7 6700HQ + HM170总共有32条PCIE 3.0可以使用,那么即使独显GTX960M 4GB DDR5最大占用CPU内置的PCIE3.0X16,那么PCH上仍然还有16条PCIE3.0X1可以给NVME SSD使用的。NVME SSD就占用PCIE3.0X4的带宽而已,所以理论上HM170的主板不存在不支持NVME SSD这一说。只要HM170的UEFI启动版本和BIOS支持NVME,那么就肯定没问题的。

我拿了一个8GB的SMI主控的USB2.0的WIN10启动U盘顺手插入笔记本的右侧的USB2.0中,开机按F12进去启动菜单选择U盘启动。竟然没有WIN10安装的进度条,依然还是INSYDE UFEI 2.4的启动界面,我这下醉了。无奈之下,我拔掉M2-1的PP2 GB240,拿出台式机里的安装好WIN10系统的INTEL 600P 512GB M2 NVME SSD插进M2-1。

一开机,竟然直接进去WIN10系统了。顺手看了下这块屏幕,随手手拍了几张,可视角度还行。

但是我再开机按住F12选择WIN10安装盘的SMI U盘启动,继续直接跳过进入INTEL 600P的WIN10系统里面去了。。。。。。

然后就是连续三次的尝试摸索:

1、我关机将PP2 GB240 NVME SSD插入M2-2,用INTEL 600P带进WIN10的系统里,设备管理器里面继续认不出这块盘。

2、我关机将LITEON PH4-8E256 SATA AHCI协议的原配盘插进去M2-2,用INTEL 600P带进WIN10的系统里,设备管理器里面认出了这块盘。

3、我关机将LITEON PH4-8E256 SATA AHCI协议的原配盘插进去M2-1,将INTEL 600P 512GB NVME SSD插入M2-2用LITEON PH4-8E256带进WIN10的系统里,结果设备管理器里面认不出INTEL 600P。

继续更新结论:

M2-1 LITEON PH4-8E256 SATA AHCI协议 OK!

M2-1 INTEL 600P 512GB NVME协议 OK!

M2-2 PP2 GB240 NVME协议 fail!

M2-2 INTEL 600P 512GB NVME协议 fail!

M2-2 LITEON PH4-8E256 SATA AHCI协议 OK!

这结论说明M2-1支持NVME SSD是没错的,M2-2仅仅支持SATA AHCI协议的M2 SSD,那么现在需要解决的就是U盘安装系统的问题。

想了半天,我把USB2.0的WIN10安装U盘插入笔记本左侧的USB3.0中。开机按住F12选择U盘,仍然没有进入WIN10安装界面。这下真的醉了, 老司机阴沟里翻车了。

我在心里对这个本子进行了一百万次神兽踩过的操作之后,打给电话给朋友,问了下U盘安装WIN10系统的情况,和我遇到的一模一样。我立即问他是用的哪个U盘,他说不就是你上次送给我那8G U盘吗,我一想立马明白了,这个SMI主控的U盘,看来是很可能普遍性有问题啊。

我寻思着要不换个金士顿的USB3.0的U盘再烧一次WIN10启动U盘试试,插入USB2.0的口子中,选择U盘启动,开机按住F12选择U盘启动。

熟悉的WIN10安装界面瞬间出现了,关机,插入USB3.0上,开机F12选择U盘启动,继续WIN10安装界面出现了。看来就是那个SMI USB2.0 U盘的黑锅没错了。

继续更新结论:

M2-1 LITEON PH4-8E256 SATA AHCI协议 OK!

M2-1 INTEL 600P 512GB NVME协议 OK!

M2-1 PP2 GB240 NVME协议 OK!

M2-2 PP2 GB240 NVME协议 fail!

M2-2 INTEL 600P 512GB NVME协议 fail!

M2-2 LITEON PH4-8E256 SATA AHCI协议 OK!

那么继续利用上面四个盘尝试SATA位和两个M2的组合模式,得出结论

双盘模式:M2-1 NVME/M2-2 AHCI

双盘模式:M2-1 NVME/SATA AHCI

双盘模式:M2-1 AHCI/M2-2 AHCI

双盘模式:M2-2 AHCI/SATA AHCI

三盘模式:M2-1 NVME/M2-2 AHCI/SATA AHCI

三盘模式:M2-1 AHCI/M2-2 AHCI/SATA AHCI

所以这本子要同时上PP2 GB240 NVME SSD,原配的LITEON PH4-8E256和INTEL DC S3500 800G是完全可以一起使用的。

下面说下如何把原配SSD里的操作系统克隆到NVME SSD里面去,这个技巧具有普遍性,我就以这台笔记本原配的LITEON PH4-8E256和增加的PP2 GB240 NVME为例简单说明一下操作手法

开机F12选择LITEON PH4-8E256启动,这样就进去原配的OEM WIN10系统里面去了,

安装ACRONIS TURE IMAGE 2016

没有付费的正式版的话就直接点开始试用

其实付费版有个克隆磁盘非常好用,但是试用版嘛就没法使用这个功能,必须通过先备份再还原的方式完成磁盘的克隆操作。

备份选择磁盘与分区

如果要把原配的PH4-8E256 SSD上的三个分区全部备份就把整个磁盘打勾

如果只想把原配的PH4-8E256 SSD上的WINDOWS分区备份就把整个WINDOWS分区打勾即可,我选择只备份WINDOWS分区,因为我觉得240GB的SSD空间本身就不大,没必要分三个区。

既然是备份就需要选择一个备份的存储空间,当然你可以选择USB外部存储,也可以选择存储在内网的NAS上,其实只要选择备份在PP2 GB240 NVME SSD之外的盘上面都可以。

备份完成,点恢复磁盘

然后点上面的磁盘界面,左边是我们刚备份好的PH4-8E256上的WINDOWS系统盘,右边选择PP2 GB240 NVME SSD

点击执行后,系统会提示你PP2 GB240上的全部数据会丢失,直接点是

这样,恢复文件就将WINDOWS系统盘往PP2 GB240上恢复,恢复完成后直接重启系统即可,开机自动从PP2 GB240 NVME上启动。

打开磁盘管理一看,磁盘0是PP2 GB240,磁盘1是PH4-8E256,磁盘2是INTEL DC S3500 800GB,PH4-8E256上的WIN10系统C盘被原封不动的克隆到了PP2 GB240上了。这样就完成了系统的克隆操作。

一样克隆的系统也是激活的。

这样就顺利完成了从原配SSD PH4-8E256到NVME的PP2 GB240的操作系统克隆迁移。

其实这笔记本的主板用的是LENOVO的SLIC证书,所以如果你不想系统克隆而非要U盘重装系统的话,选择一个联想OEM版本的WIN10光盘就可以免激活了,麻烦在于你还要重装一次全部的驱动程序。

CPU:I7 6700HQ 四核八线 2.6G主频,睿频3.5G

主板:HM170

内存是单条的金士顿DDR4 2133

Intel HD530和GTX960M 4GB DDR5双显卡

单通道8GB内存下跑了下GPUZ测试,大约在I7 6700K的73%效能。

要使用NVME SSD首先得关闭设备上的WINDOWS写入高速缓冲区刷新。

否则你跑分就是这个姿态

关闭后跑分就是这个姿势,这块PP2 GB240说实话跑分不赖2591,就是不知道谁家的东西。

即使用INTEL 600P 512GB NVME去跑也就1500分不到而已。

原配的LITEON PH4-8E256

INTEL DC S3500 800G

CPU AIDA 64 单FPU拷机 + INTEL HD530核显 FURMARK 同时拷机,稳定温度在CPU 67度,核显65度

CPU AIDA 64 单FPU拷机 + GTX960M 4G DDR5 FURMARK 同时拷机,稳定温度在CPU 85度,显卡79度。

AIDA64看了下屏幕是奇美的CMN N156HGE-EAL面板,TN没跑了。

本来这篇文章是一个被两个山寨U盘折腾到伤心的悲情故事,但是老司机实在伤不起这个标题,索性就当作笔记本更换NVME SSD的一个指南存在吧。

刨除对山寨U盘的怨念之外,这个过程我也学习到了很多东西

1、HM170的笔记本只要有M.2基本都可以上NVME SSD,即使BIOS里并没有NVME选项

2、AMI和AWARD的BIOS一般升级到最新对NVME都没有啥兼容问题,INSYDE的BIOS需要UEFI在2.4版本或者以上才支持NVME SSD

3、笔记本自带的SATA硬盘或者M.2 SSD内置的出厂操作系统迁移到NVME SSD上是没有任何启动问题的,完美兼容。

4、要正常使用NVME SSD的速度,请将设备管理器NVME磁盘属性里面的【关闭设备上WINDOWS高速缓冲缓存区刷新】这个选项打勾。

系统装好之后大致测试了下,系统都很稳定了,直接关机拿走,我的小桌板又恢复了两个iPad玩一个看一个的节奏,然后直接电话朋友来取走笔记本,可是。。。。。。

“哥,那个Skull Canyon 骷髅峡谷 NUC降价还早呢,我拿我本子里原装的金士顿8G条子加原配的建兴256G SSD换你那对备着的2400 16G套条,你看成不,下次我寻到好东西先给你玩拉!”

“想得美”

“顶多晚上我请你喝酒”

“有妹子不”

“我穿女装陪你喝酒”

“滚”

其实说实话,每个人大学抱着第一台笔记本的时候都像抱着第一个女朋友,希望她身材和气质更完美一些这本没有错,特别遇到一个处女座的基友你是很难拒绝他的完美论调的,成人之美其实也没啥大不了的,东西值不值得交换并不重要,更重要的是这个朋友值得交心。

【结语】

本文由什么值得买网友“gaojie20”撰写并授权转载,由于篇幅原因,仅选取了精华的部分进行分享。完整原文可去我站《你的笔记本支持NVME SSD了吗?实战硬改NVME及系统迁移攻略》查看,如果你有更多好物想跟我们分享,欢迎在评论区与我们互动。

SLIC超像素分割算法研究(代码可下载)

超像素概念是2003年Xiaofeng Ren[1]提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将像素分组,用少量的超像素代替大量的像素来表达图片特征,很大程度上降低了图像后处理的复杂度,所以通常作为分割算法的预处理步骤。已经广泛用于图像分割、姿势估计、目标跟踪、目标识别等计算机视觉应用[2],而目前,OpenCV关于超像素生成,没有发现网上有相关代码,但其实在opencv_contrib目录下面的未稳定功能模块有SLIC,SEEDS,LSC算法相关实现,如果想要使用这个目录的功能,需要自己重新进行OpenCV的编译[8],有关编译和配置方法可参考[8 ,9]。一些常用的超像素分割算法和性能对比如下表[3]:

本文介绍SLIC(simple lineariterativeclustering)超像素分割算法,即简单的线性迭代聚类,该算法是目前执行速度最快的超像素分割方法[3],2015年实现并行执行速度达250FPS [4,5]。SLIC算法是2010年Achanta[6]提出的一种思想简单、实现方便的算法,将彩色图像转化为CIELAB颜色空间和XY坐标下的5维特征向量,然后对5维特征向量构造距离度量标准,对图像像素进行局部聚类的过程[2],算法基本思路与Kmeans聚类算法类似。算法具体实现过程如下[6,2]:

1. 初始化种子点(聚类中心):按照设定的超像素个数,在图像内均匀的分配种子点。假设图片总共有 N 个像素点,预分割为 K 个相同尺寸的超像素,那么每个超像素的大小为N/ K ,则相邻种子点的距离(步长)近似为S=sqrt(N/K)。

2. 在种子点的n*n邻域内重新选择种子点(一般取n=3)。具体方法为:计算该邻域内所有像素点的梯度值,将种子点移到该邻域内梯度最小的地方。这样做的目的是为了避免种子点落在梯度较大的轮廓边界上,以免影响后续聚类效果。

3. 在每个种子点周围的邻域内为每个像素点分配类标签(即属于哪个聚类中心)。和标准的k-means在整张图中搜索不同,SLIC的搜索范围限制为2S*2S,可以加速算法收敛,如下图。在此注意一点:期望的超像素尺寸为S*S,但是搜索的范围是2S*2S。

4. 距离度量。包括颜色距离和空间距离。对于每个搜索到的像素点,分别计算它和该种子点的距离。距离计算方法如下:

其中,dc代表颜色距离,ds代表空间距离,Ns是类内最大空间距离,定义为Ns=S=sqrt(N/K),适用于每个聚类。最大的颜色距离Nc既随图片不同而不同,也随聚类不同而不同,所以我们取一个固定常数m(取值范围[1,40],一般取10)代替。最终的距离度量D'如下:

由于每个像素点都会被多个种子点搜索到,所以每个像素点都会有一个与周围种子点的距离,取最小值对应的种子点作为该像素点的聚类中心。

5. 迭代优化。理论上上述步骤不断迭代直到误差收敛(可以理解为每个像素点聚类中心不再发生变化为止),实践发现10次迭代对绝大部分图片都可以得到较理想效果,所以一般迭代次数取10。

6. 增强连通性。经过上述迭代优化可能出现以下瑕疵:出现多连通情况、超像素尺寸过小,单个超像素被切割成多个不连续超像素等,这些情况可以通过增强连通性解决。主要思路是:新建一张标记表,表内元素均为-1,按照“Z”型走向(从左到右,从上到下顺序)将不连续的超像素、尺寸过小超像素重新分配给邻近的超像素,遍历过的像素点分配给相应的标签,直到所有点遍历完毕为止。

SLIC算法的代码(C++和matlab版)可到该算法发明人Achanta的页面[7]下载,我们下载该代码的C++windows版本,并编写一个简单图像格式转换函数,将SLIC超像素算法与openCV一起实现了一个简单的应用实例,因为SLIC算法输入必须是RGB彩色图像,因此我们考虑了灰度图像和彩色图像两种不同情况下的数据转换,当输入为灰度图时,将该灰度图像复制三次到其他色彩通道,主程序如下(代码运行还需要从Achanta网站[7]下载的SLIC.cpp和SLIC.h文件,有关我们测试程序的所有代码(包括了SLIC.cpp和SLIC.h文件)下载网站:http://download.csdn.net/detail/zhouxianen1987/9778247):

[html] view plain copy

#if 1 #include <iostream> #include <time.h> #include "opencv2/opencv.hpp" #include "SLIC.h" using namespace std; using namespace cv; int imgOpenCV2SLIC(Mat img, int &height, int &width, int &dim, unsigned int * &image); int imgSLIC2openCV(unsigned int *image, int height, int width, int dim, Mat &imgSLIC); int main() { Mat imgRGB; time_t tStart,tEnd,exeT; imgRGB= imread("0_0_77rgb.jpg"); if (imgRGB.empty() == true){ cout<< "can not open rgb image!"<<endl ; } unsigned int *image; int height; int width; int dim; long imgSize; int numlabels(0); SLIC slic; int m_spcount= 100 ; int m_compactness=10; imgOpenCV2SLIC(imgRGB, height, width, dim, image);//OpenCV 图像数据转换成SLIC图像数据 imgSize = height* width; int* labels = new int[imgSize]; tStart=clock(); //SLIC超像素分割,代码下载网站:http://ivrl.epfl.ch/research/superpixels#SLICO slic.DoSuperpixelSegmentation_ForGivenNumberOfSuperpixels(image, width, height, labels, numlabels, m_spcount, m_compactness); slic.DrawContoursAroundSegments(image, labels, width, height, 0); tEnd=clock(); exeT=tEnd-tStart; Mat imgSLIC; imgSLIC2openCV(image, height,width,dim,imgSLIC);//SLIC结果:SLIC图像数据转换成OpenCV 图像数据 //结果显示 cout<< "SLIC执行时间exeT:"<<exeT<< "毫秒"<<endl ; imshow("imgRGB",imgRGB); imshow("imgSLIC1",imgSLIC); waitKey(); return 0; } //OpenCV Mat图像数据转换为SLIC图像数据 //输入:Mat img, int &height, int &width, int &dim, //输出:unsigned int * &image,同时返回转换是否成功的标志:成功为0,识别为1 int imgOpenCV2SLIC(Mat img, int &height, int &width, int &dim, unsigned int * &image) { int error=0; if( img.empty() ) //请一定检查是否成功读图 { error =1; } dim=img.channels();//图像通道数目 height=img.rows; width=img.cols; int imgSize=width*height; unsigned char *pImage = new unsigned char [imgSize*4]; if(dim==1){ for(int j = 0; j < height ; j++){ uchar * ptr = img.ptr<uchar> (j); for(int i = 0; i < width ; i++) { pImage[j * width*4 + 4*i+3] = 0; pImage[j * width*4 + 4*i+2] = ptr[0]; pImage[j * width*4 + 4*i+1] = ptr[0]; pImage[j * width*4 + 4*i] = ptr[0]; ptr ++; } } } else{ if(dim==3){ for(int j = 0; j < height ; j++){ Vec3b * ptr = img.ptr<Vec3b> (j); for(int i = 0; i < width ; i++) { pImage[j * width*4 + 4*i+3] = 0; pImage[j * width*4 + 4*i+2] = ptr[0][2];//R pImage[j * width*4 + 4*i+1] = ptr[0][1];//G pImage[j * width*4 + 4*i] = ptr[0][0];//B ptr ++; } } } else error=1; } image = new unsigned int[imgSize]; memcpy( image, (unsigned int*)pImage, imgSize*sizeof(unsigned int) ); delete pImage; return error; } //SLIC图像数据转换为OpenCV Mat图像数据 //输入:unsigned int *image, int height, int width, int dim //输出:Mat &imgSLIC ,同时返回转换是否成功的标志:成功为0,识别为1 int imgSLIC2openCV(unsigned int *image, int height, int width, int dim, Mat &imgSLIC) { int error=0;//转换是否成功的标志:成功为0,识别为1 if(dim==1){ imgSLIC.create(height, width, CV_8UC1); //遍历所有像素,并设置像素值 for( int j = 0; j< height ; ++j) { //获取第 i行首像素指针 uchar * p = imgSLIC.ptr<uchar> (j); //对第 i行的每个像素(byte)操作 for( int i = 0; i < width ; ++i ) p[i] =(unsigned char)(image[j*width+i]& 0xFF) ; } } else{ if(dim==3){ imgSLIC.create(height, width, CV_8UC3); //遍历所有像素,并设置像素值 for( int j = 0; j < height ; ++j) { //获取第 i行首像素指针 Vec3b * p = imgSLIC.ptr<Vec3b> (j); for( int i = 0; i < width ; ++i ) { p[i][0] = (unsigned char)(image[j*width+i] & 0xFF ); //Blue p[i][1] = (unsigned char)((image[j*width+i] >> 8 ) & 0xFF ); //Green p[i][2] = (unsigned char)((image[j*width+i] >> 16) & 0xFF ) ; //Red } } } else error= 1 ; } return error; } #endif

执行效果如下:

相关问答

东芝笔记本电脑的bios怎么刷入 slic2.1 文件,用什么工具?-ZOL问答

看你的主板是哪个厂家的什么型号的,从主板厂家网站下载BIOS文件,查看你电脑的BIOS是哪个厂家,就可以用BIOS工具把相应的SLIC2.1表集成进BIOS文件,最后把BIOS文件...

联想台式电脑怎么开启 SLIC2.1 - lamb冒喵喵 的回答 - 懂得

网络找这个型号的bios修改版(加了slic2.1的bios)去刷,bios之家这个站就专门对付这些问题,当然不是网站,是网友中的高人----恐怕不是你很容易就对付...

slic2.1 能激活win8.1么-ZOL问答

很不幸。好像是slic破坏了blos里的序列号。要是在线直接激活密钥的话,现在肯定是没有的,楼下的那位朋友给你的密钥是用来电话激活的,你输入进去肯...

SLIC 属于什么系列?

SLIC属于图像分割算法系列。1.SLIC属于图像分割算法系列。2.SLIC算法是一种基于k-means的图像分割算法,对于需要处理大量图像的应用场景,SLIC具有速度快、效果...

SLIC 2.1 风险大吗?肿么刷?-ZOL问答

刷SLIC2.1风险大吗?肿么刷?举报音箱奋达9人讨论439次围观关注问题写回答讨论回答(9)YAFUDIY首先,介绍一下为什么给主板刷SLIC就能够激活WIN7,详情请...

双系统备份一键还原?

可以重新安装一键恢复工程师版本解决,工程量比较大,解决之后将来系统有问题,那时候就可以一劳永逸了,我的电脑是y580,当初买来的时候是dos系统,后来刷了slic2...

win7激活识别到 slic 模块怎么办?

1.备份在windows下运行BIOS_Backup_TooKit.EXE或SLIC_Dump_ToolKit.EXE备份BIOS文件,改后缀为.ROM2.打开MMTOOL,载入ROM,选择提取...

使用激活系统工具导致服务器起不来了?

从安全模式看是卡在sysdisk.sys里面了,有查了一下那个激活软件的原来,是自动将模拟出的Slic2.1加载到引导区,再将证书和密钥导入系统,从而骗过微软该系统为品...

推荐一下,oem什么意思?

[回答]就是误解卖掉微软公司的版权,以很便宜的价格,当然功能上也少一些,比如误解的oem光盘是没完全恢复系统的功能的。但是并不影响你的正常用于,误解把版...

联想有两个隐藏分区一个是主分区一个是OEM分区这两个各有什么...

相比盗版系统,隐藏分区内的系统是正版系统,支持slic2.1直接激活的,建议使用。有用(0)回复联想的一键还原分区已经隐藏起来了,通过系统自带的分区没问题有用...