在这个博客。我想分享一下OpenCV源代码CPU指令系统CV_SSE2和其他相关知识

一个、
   CV_SSE系列指令集的预编译符号定义在opencv2/core/internal.hpp这个头文件里,假设你不包括这个头文件的话。把源代码复制到自己的函数中,CV_SSE是不被定义的
以下是harrisCorner中的一部分代码


在上述代码中。假设条件编译符号CV_SSE被定义过,则调用checkHardwareSupport(CV_CPU_SSE); 获取你的电脑上的CPU是否支持CPU_SSE指令集优化特性。

假设查询结果为真,就说明你的CPU在当前状态下支持CPU_SSE指令集优化特性。

假设查询结果为假。就说明你的CPU不支持CPU_SSE指令集优化。可是这并不说明你的CPU硬件本身不支持SSE指令集优化特性。



二、
CPU指令集优化功能能够依据须要开启或关闭:
首先能够使用此函数 
         
bool cv::useOptimized()
        来查询当前是否开启了CPU指令集优化功能。
        能够使用函数
                       void cv::setUseOptimized(bool onoff)
来设置是否开启CPU指令集优化功能;
        能够使用此函数
 bool checkHardwareSupport(int feature);
                     来查询你的CPU是否支持某种指令集优化特性。

 feature的取值有下面几种:
          
请看一下代码:

在上述代码中,假设setUseOptimized()函数的參数为true的话,则CPU的硬件指令优化功能被开启。状态函数opt_status = cv::useOptimized()返回为真,
 并且在上述代码中我们查询了我的机器的CPU指令优化支持特性,我的CPU型号为Inter Core(TM) i5 650 的。查询结果显演示样例如以下:

能够看到,我的CPU支持绝大多数的指令集优化特性。仅仅有最后一个CPU_AVX是0,虽然我们用程序指令开启了指令集优化特性,可是CPU_AVX依旧是0,这就说明我的CPU在硬件层面上不提供CPU_AVX的优化功能,即使setUseOptimized()函数的參数为true。也无法使用此功能。
假设setUseOptimized()函数的參数为false的话,则CPU的硬件指令优化功能被关闭。状态函数opt_status = cv::useOptimized()返回为假。上述代码的执行结果为


能够看到,此时全部的CPU指令集优化功能都被禁止了,即使CPU硬件本身支持的特性,也被禁止使用了。


所以在你的程序中,你能够在main()主函数中通过setUseOptimized()功能设置是否启用OpenCV指令集的优化

版权声明:本文博客原创文章。博客,未经同意,不得转载。

OpenCV五学习: 如何使用命令来启动或关闭OpenCV的CPU指令系统CV_SSE2,CV_SSSE4和其他优化的更多相关文章

  1. Oracle安装完成后,如何用命令行启动和关闭数据库?

    Oracle安装完成后,如何用命令行启动和关闭数据库? 解答: 打开:STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ dat ...

  2. 用cmd命令来 启动和关闭 SqlServer

    cmd命令 启动and关闭 sql数据库服务 (1)先用以管理员身份打开你的cmd窗口. (2)后输入以下对应的命名. 如下: 启动SQLSERVER NET START MSSQLSERVER 暂停 ...

  3. mysql在windows下命令行启动与关闭服务

    一.命令行关闭与启动服务的命令: 二.运行cmd的命令行程序时,必须以管理员身份运行.否则会出现如下提示: 三.mysql5.7版本的服务名一般默认为mysql57,因此如果使用服务名mysql,那么 ...

  4. Oracle的启动与关闭

    启动数据库的前提条件: 环境变量定义好($ORACLE_HOME,$ORACLE_SID,$PATH) 能密码文件认证或OS认证(确保能登入sys) 有正确的参数文件(启动数据库需要查找参数文件,默认 ...

  5. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  6. OpenCV入门学习笔记

    OpenCV入门学习笔记 参照OpenCV中文论坛相关文档(http://www.opencv.org.cn/) 一.简介 OpenCV(Open Source Computer Vision),开源 ...

  7. Apache Commons CLI官方文档翻译 —— 快速构建命令行启动模式

    昨天通过几个小程序以及Hangout源码学习了CLI的基本使用,今天就来尝试翻译一下CLI的官方使用手册. 下面将会通过几个部分简单的介绍CLI在应用中的使用场景. 昨天已经联系过几个基本的命令行参数 ...

  8. 变身windows达人,用运行命令直接启动所有应用程序

    先看一下效果 在”运行“输入QQ,敲回车即打开登录窗口,相当于双击QQ登录快捷方式,对于码农.电脑一族这是不是一件高逼格,很酷的事?你甚至可以将任何你想设置命令启动的程序用该方式启动,比如敲chrom ...

  9. memcached学习笔记——存储命令源码分析上篇

    原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command ...

随机推荐

  1. stm32内部的CAN总线

    功能概述: bxCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持CAN协议2.0A和2.0B:它的设计目标是以最小的CPU负载来高效处理大量的报文.它也支持报文发送的优先级 ...

  2. Ibatis的分页机制的缺陷

    我们知道,Ibatis为我们提供了可以直接实现分页的方法 queryForList(String statementName, Object parameterObject, int skipResu ...

  3. 07-UIKit(tableview的编辑模式、accessoryView)

    目录: 一.tableview的编辑模式-增删改查 二.不使用继承创建tableview 三.accessoryView辅助视图 回到顶部 一.tableview的编辑模式-增删改查 [1-conta ...

  4. 娓娓道来c指针 (0)c语言的梦魇:c指针

    (0)c语言的梦魇:c指针 序 c语言中有一个重点:c指针.它也是一个难点.当然,这是一句废话:重点往往也是难点.在c标准中,对指针的定义是这种: 指针的类型是derived from其他类型,也就是 ...

  5. 浅析SSH核心原理(二)

    Hibernate是一个开放源代码的ORM(对象-关系映射)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任 ...

  6. 三种java 去掉字符串中的重复字符函数

    三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...

  7. COCOS2D-X之圆形进度条的一个简单Demo

    这应该是游戏中很常见的一个效果.显示某个事件的进度等,在加载资源或者联网的时候经常用到.所以有必要学习学习 一.我们直接在COCOS2D-X自带的HelloCpp的工程中添加代码即可.我们在初始化中添 ...

  8. 函数指针&绑定: boost::functoin/std::function/bind

    see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...

  9. java设计模式之观察者模式(9)

    Java观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象.这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者 ...

  10. 【SICP感应】3 级数据和符号数据

    在本书的第二章学习时,有一个问题我一直很困扰,那是2.2.4举例节.因为没有华丽的输出模式书,它只能有一个对的英文字母.两三个月的这浅浅的学校前Common Lisp同样是真实的,当.了非常赞的线条, ...