在windows上安装OpenCV

在windows上安装OpenCV,官方提供的教程,我翻译了一下。如有不正解,请指正

使用git-bash(版本> = 2.14.1)和cmake(版本> = 3.9.1)安装

1.您必须下载cmake(版本> = 3.9.1)并进行安装。 安装期间必须将cmake添加到PATH变量
2.您必须安装git-bash(版本> = 2.14.1)。 在安装过程中不要将git添加到PATH变量中
3.运行git-bash。 您观察到命令行窗口。 假设您要在c:/ lib中构建opencv和opencv_contrib
4.在git命令行中输入以下命令(如果文件夹不存在):
mkdir /c/lib
cd /c/lib
5.使用名称installOCV.sh将此脚本保存在c:/ lib中

#!/bin/bash -e
myRepo=$(pwd)
CMAKE_CONFIG_GENERATOR="Visual Studio 14 2015 Win64"
if [  ! -d "$myRepo/opencv"  ]; thenecho "cloning opencv"git clone https://github.com/opencv/opencv.gitmkdir -p Build/opencvmkdir -p Install/opencv
elsecd opencvgit pull --rebasecd ..
fi
if [  ! -d "$myRepo/opencv_contrib"  ]; thenecho "cloning opencv_contrib"git clone https://github.com/opencv/opencv_contrib.gitmkdir -p Build/opencv_contrib
elsecd opencv_contribgit pull --rebasecd ..
fi
RepoSource=opencv
pushd Build/$RepoSource
CMAKE_OPTIONS='-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF  -DWITH_CUDA:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF -DINSTALL_CREATE_DISTRIB=ON'
cmake -G"$CMAKE_CONFIG_GENERATOR" $CMAKE_OPTIONS -DOPENCV_EXTRA_MODULES_PATH="$myRepo"/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX="$myRepo"/install/"$RepoSource" "$myRepo/$RepoSource"
echo "************************* $Source_DIR -->debug"
cmake --build .  --config debug
echo "************************* $Source_DIR -->release"
cmake --build .  --config release
cmake --build .  --target install --config release
cmake --build .  --target install --config debug
Popd

在此脚本中,我想您以64位使用VS 2015
CMAKE_CONFIG_GENERATOR=“Visual Studio 14 2015 Win64”

备注
如果你想要用VS 2017,你可以这样修改
CMAKE_CONFIG_GENERATOR="Visual Studio 15 2017 Win64"

并且opencv将安装在c:/ lib / install中
-DCMAKE_INSTALL_PREFIX=“myRepo"/install/"myRepo"/install/"myRepo"/install/"RepoSource” “myRepo/myRepo/myRepo/RepoSource”
没有Perf测试,没有测试,没有文档,没有CUDA以及没有示例
CMAKE_OPTIONS=’-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF’

6.在git命令行中输入以下命令:
./installOCV.sh
7.喝一两杯咖啡… opencv准备好了:就这些!
8.下次运行此脚本时,将更新并重建opencv和opencv_contrib

到这里就完成了安装,可以在Visual Studio里用OpenCV了。这是最简单的方法,如果你想要opencv_contrib下的module,但如果你只想要OpenCV,可以直接在OpenCV的官网上下载windows的安装包,解压后就可以了。

通过从源文件制作自己的库进行安装

如果您要构建自己的库,则可以从我们的Git存储库中获取源文件。

从头开始构建OpenCV库需要预先安装几个工具:

  • 选择一个IDE(最好),或者只是一个将实际生成二进制文件的CC ++编译器。 在这里,我们将使用Microsoft Visual
    Studio。 但是,您可以使用具有有效CC ++编译器的任何其他IDE。

  • CMake,这是一个精巧的工具,可以从OpenCV源文件生成项目文件(针对您选择的IDE)。 它还将允许轻松配置OpenCV构建文件,以使二进制文件完全适合您的需求。

  • Git获取OpenCV源文件。
    一个很好的工具是TortoiseGit。 另外,您也可以从Sourceforge上的页面下载源文件的存档版本

OpenCV可能有多种形式。 有一个“核心”部分可以独立工作。 尽管如此,还是有一些由第三方组成的工具库(3rd parties),它们提供了OpenCV可以利用的服务。 这些将在许多方面提高其功能。 为了使用它们中的任何一个,您需要下载并将它们安装在系统上。

  • 需要Python库来构建OpenCV的Python接口。现在,请使用2.7.{x}版本。如果要构建OpenCV文档,这也是必须的。

  • Numpy是用于Python的科学计算软件包。 Python介面所必需。

  • OpenCV内部使用英特尔线程构建模块(TBB)处理并行代码段。使用此功能可确保OpenCV库将利用系统CPU中拥有的所有内核。

  • 英特尔集成性能基元(IPP)可用于提高OpenCV库的颜色转换,Haar训练和DFT功能的性能。请注意,因为这不是一项免费服务。

  • 与使用Qt框架的默认用户界面相比,OpenCV提供了一种更精美,更有用的图形用户界面。要快速了解此功能,请查看“ Qt新功能”部分下的文档highgui模块。需要框架的4.6版或更高版本。

  • Eigen是用于线性代数的C ++模板库。

  • 最新的CUDA工具包将允许您使用GPU内部的电源。这将大大提高某些算法(例如HOG描述符)的性能。 OpenCV团队不断努力使我们越来越多的算法能够在GPU上运行。

  • 该库需要OpenEXR源文件才能使用这种高动态范围(HDR)图像文件格式。

  • OpenNI框架包含一组开源API,这些API通过语音命令识别,手势和身体运动跟踪等方法为与设备的自然交互提供支持。预编译的二进制文件可以在这里找到。 Github上也提供了OpenNI和OpenNI2的源代码

  • Doxygen是一个文档生成器,并且是实际上将创建OpenCV文档的工具。

现在,我们将描述完整构建所要遵循的步骤(使用上述所有框架,工具和库)。 如果不需要其中一些支持,则可以随意跳过本节。

建立文库

1.确保您的IDE带有有效的编译器。如果是Microsoft Visual Studio,则只需安装并确保其启动即可。
2.安装CMake。只需遵循向导,无需将其添加到路径。默认安装选项为“确定”。
3.从其官方站点下载并安装msysgit的最新版本。还有一个便携式版本,您只需打开包装即可访问Git的控制台版本。假设对于我们中的某些人来说,这可能就足够了。
4.安装TortoiseGit。根据您使用的操作系统类型选择32位或64位版本。在安装时,找到您的msysgit(如果它不会自动执行此操作)。按照向导进行操作–大多数情况下,默认选项都可以。
5.在文件系统中选择一个目录,您将在其中下载OpenCV库。我建议创建一个路径短且没有特殊字符的新路径,例如D:/ OpenCV。对于本教程,我建议您这样做。如果您使用自己的路径并且知道自己在做什么–可以。
a.将存储库克隆到所选目录。单击“克隆”按钮后,将出现一个窗口,您可以从其中选择要下载源文件的存储库(https://github.com/opencv/opencv.git)以及要下载到的目录(D:/ OpenCV)。
b.按下“确定”按钮,请耐心等待,因为该资源库下载量很大。这将需要一些时间,具体取决于您的Internet连接。
6.在本节中,我将介绍安装第三方库(3rd party libraries)。
a.下载Python库并使用默认选项进行安装。您将需要其他几个python扩展。幸运的是,可以通过一个名为Setuptools的不错的工具来自动安装所有这些工具。重新下载并安装。
b.安装Numpy的最简单方法是仅从sourceforge页面下载其二进制文件。确保下载并完全安装适用于python版本的二进制文件(适用于2.7版本)。
c.对于英特尔线程构建模块(TBB),请下载源文件并将其解压缩到系统上的目录中。例如,让D:/ OpenCV / dep。对于安装英特尔集成性能基元(IPP)的情况是相同的。要提取档案,我建议使用7-Zip应用程序。
在这里插入图片描述

d.如果是Eigen库,则还是要下载并解压缩到D:/ OpenCV / dep目录。
e.与上述OpenEXR相同。
f.对于OpenNI框架,您需要同时安装开发版本和PrimeSensor模块。
g.对于CUDA,您再次需要两个模块:最新的CUDA工具包和CUDA工具SDK。 根据您的操作系统,使用32或64位设置下载并安装完整的选项。
h.如果使用Qt框架,则需要自己构建二进制文件(除非您将Microsoft Visual Studio 2008与32位编译器一起使用)。 为此,请转到“ Qt下载”页面。 下载源文件(而不是安装程序!!):
在这里插入图片描述

将其解压缩到一个漂亮且简短的目录中,例如D:/ OpenCV / dep / qt /。 然后,您需要构建它。 通过使用开始菜单搜索来启动Visual Studio命令提示符(2010)(或在开始菜单“所有程序”->“ Microsoft Visual Studio 2010”->“ Visual Studio工具”->“ Visual Studio命令提示符”(2010)中导航)。

在这里插入图片描述
现在,导航到提取的文件夹,并使用此控制台窗口在其中输入。 您应该有一个包含诸如Install,Make等文件的文件夹。 使用dir命令列出当前目录中的文件。 到达此目录后,输入以下命令:
configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools
-no-qt3support -no-multimedia -no-ltcg
完成此过程大约需要10-20分钟。 然后输入下一个命令,该命令将花费更长的时间(很容易花费甚至超过一个小时的时间):
nmake
之后,在Windows 7上使用以下命令设置Qt环境变量:
setx -m QTDIR D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3
另外,通过使用PathEditor将构建的二进制文件路径添加到系统路径。 在我们的例子中,这是D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3/bin。

注意
如果计划进行Qt应用程序开发,则此时也可以安装Qt Visual Studio加载项。 之后,您无需使用Qt Creator即可制作和构建Qt应用程序。 一切都很好地集成到Visual Studio中。

7.现在启动CMake(cmake-gui)。 您可以再次在开始菜单搜索中输入它,也可以从“所有程序”-> CMake 2.8-> CMake(cmake-gui)中获取它。 首先,选择OpenCV库的源文件目录(1)。 然后,指定用于构建OpenCV(2)二进制文件的目录。
在这里插入图片描述
按“配置(Configure )”按钮以指定要使用的编译器(和IDE)。 请注意,如果您可以在不同的编译器之间进行选择,以制作64位或32位库。 选择在应用程序开发中使用的一个。
在这里插入图片描述
CMake将启动,并根据您的系统变量尝试自动定位尽可能多的软件包。 您可以在WITH –> WITH_X菜单点(其中X是软件包的缩写)中修改要用于构建的软件包。 以下是您可以打开或关闭的当前软件包的列表:
在这里插入图片描述
选择您要使用的所有软件包,然后再次按“配置”按钮。 为了更轻松地了解构建选项,请确保已打开二进制目录选择下的“分组”选项。 对于某些软件包,CMake可能找不到所有必需的文件或目录。 在这种情况下,CMake将在其输出窗口(位于GUI的底部)中引发错误,并将其字段值设置为找不到常量。 例如:
在这里插入图片描述
在这里插入图片描述
对于这些,您需要手动设置查询的目录或文件路径。 之后,再次按“配置”按钮以查看您输入的值是否被接受。 执行此操作,直到所有输入都正确,并且看不到GUI的字段/值或输出部分中的错误为止。 现在,我想强调一个您一定会喜欢的选项:ENABLE –> ENABLE_SOLUTION_FOLDERS。 OpenCV将创建许多项目,并且选择此选项将确保它们在解决方案资源管理器的目录中被归类。 如果您问我,这是必须具备的功能。
在这里插入图片描述
此外,您需要选择要构建OpenCV的哪一部分。

  • BUILD_DOCS->它创建两个项目来构建OpenCV的文档(将有一个单独的项目来构建HTML和PDF文件)。请注意,这些不是与解决方案一起构建的。您需要对这些命令执行一个明确的build project
  • BUILD_EXAMPLES-> OpenCV附带了许多示例应用程序,您可以从中学习大多数库功能。如果您的计算机上的OpenCV功能齐全,这也将很容易尝试。
  • BUILD_PACKAGE->在此之前的2.3版之前,您可以构建一个将构建OpenCV安装程序的项目。这样,您就可以轻松地在其他系统上安装OpenCV Favourite。对于OpenCV的最新源文件,它将生成一个新项目,该项目仅使用OpenCV源创建一个zip存档。
  • BUILD_SHARED_LIBS->使用此控件,您可以控制构建DLL文件(打开时)或构建静态库文件(* .lib)。
  • BUILD_TESTS-> OpenCV的每个模块都分配有一个测试项目。构建这些测试项目也是尝试的好方法,因为这些模块也可以在您的系统上正常工作。
  • BUILD_PERF_TESTS->还有许多OpenCV函数的性能测试。如果您担心性能,请构建它们并运行。
  • BUILD_opencv_python->不言自明。创建二进制文件以使用来自Python语言的OpenCV。
  • BUILD_opencv_world->生成一个包括所有模块的单个“ opencv_world”二进制文件(一个共享库或静态库,取决于BUILD_SHARED_LIBS),而不是一个单独的二进制文件的集合,每个模块一个二进制文件。
    再次按配置按钮,并确保没有错误报告。 在这种情况下,您可以通过按“生成”按钮告诉CMake创建项目文件。 转到构建目录并打开创建的OpenCV解决方案。 根据您选择的上述选项的多少,解决方案可能包含很多项目,因此容忍IDE的启动。 现在,您需要构建Release和Debug二进制文件。 在为其中一个构建之后,请使用IDE上的下拉菜单将其更改为另一个。
    在这里插入图片描述
    最后,您可以观察bin目录中构建的二进制文件:
    在这里插入图片描述
    对于文档,您需要在doxygen项目上为HTML文档明确发出构建命令。 它将调用Doxygen进行所有艰苦的工作。 您可以在build / doc / doxygen / html中找到生成的文档。

要将标头和二进制文件(将在自己的项目中使用)收集到一个单独的目录中(类似于预构建的二进制文件的方式),需要显式构建Install项目。

在这里插入图片描述

这将在Build内部创建一个Install目录,将所有已构建的二进制文件收集到一个位置。 仅在构建发行版和调试版之后才使用此功能。

要测试您的构建,只需进入Build / bin / Debug或Build / bin / Release目录并启动几个应用程序,例如contours.exe。 如果它们运行,您就完成了。 否则,肯定会出现严重错误。 在这种情况下,您应该在我们的问答论坛上与我们联系。 如果一切正常,则contours.exe输出应类似于以下图像(如果使用Qt支持构建):
在这里插入图片描述

注意
如果使用GPU模块(CUDA库),请确保还升级到GPU的最新驱动程序。 错误消息中包含(或找不到)nvcuda.dll中的无效条目,主要是由旧的视频卡驱动程序引起的。 要测试GPU(如果已构建),请运行performance_gpu.exe示例应用程序。

设置OpenCV环境变量并将其添加到系统路径
首先,我们设置一个环境变量以简化我们的工作。 这将保存我们在项目中使用的OpenCV库的build目录。 启动命令窗口并输入:
setx -m OPENCV_DIR D:\ OpenCV \ Build \ x86 \ vc11(建议用于Visual Studio 2012-32位Windows)
setx -m OPENCV_DIR D:\ OpenCV \ Build \ x64 \ vc11(建议用于Visual Studio 2012-64位Windows)
setx -m OPENCV_DIR D:\ OpenCV \ Build \ x86 \ vc12(建议用于Visual Studio 2013-32位Windows)
setx -m OPENCV_DIR D:\ OpenCV \ Build \ x64 \ vc12(建议用于Visual Studio 2013-64位Windows)
setx -m OPENCV_DIR D:\ OpenCV \ Build \ x64 \ vc14(建议用于Visual Studio 2015-64位Windows)

在此目录中,可以找到(提取或构建的)OpenCV二进制文件。您可以使用其他平台(例如x64而不是x86)或编译器类型,因此请替换适当的值。在其中,您应该有两个名为lib和bin的文件夹。如果要使计算机设置明智,而不是用户明智,则应添加-m。

如果您构建了静态库,那么您就完成了。否则,您需要将bin文件夹路径添加到系统路径。这是因为您将以*“动态链接库” *(也称为DLL)的形式使用OpenCV库。这些内部存储着OpenCV库包含的所有算法和信息。操作系统将仅在运行时按需加载它们。但是,为此,操作系统需要知道它们的位置。系统PATH包含可以找到DLL的文件夹列表。将OpenCV库路径添加到此路径,然后操作系统将知道他是否需要OpenCV二进制文件在哪里寻找。否则,您将需要在操作系统的应用程序可执行文件(exe)旁边复制使用的DLL,以找到它,如果您在许多项目上工作,这将是非常不愉快的。为此,请再次启动PathEditor并添加以下新条目(在应用程序中单击鼠标右键以显示菜单):
%OPENCV_DIR%\bin
在这里插入图片描述
在这里插入图片描述
将其保存到注册表中,即可完成操作。 如果您更改了构建目录的位置,或者想尝试使用其他构建版本的应用程序,那么您要做的就是通过命令窗口中的setx命令更新OPENCV_DIR变量。

现在,您可以继续阅读“ Microsoft Visual Studio”部分中的“如何使用OpenCV构建应用程序”教程。 在那里,您将找到如何在Microsoft Visual Studio IDE的帮助下在自己的项目中使用OpenCV库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CFile、CStdioFile、FILE和其他文件操作(转)

CFile //创建/打开文件 CFile file; file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);//文件打开模式可组合使用,用“|”隔开,常用的有以下几种: //CFile::modeCreate:以新建…

Oracle修改redo log大小的方法

目的:修改当前在线日志从默认50M增加至512M。1.查看当前日志组的状态SQL> select group#,members,bytes/1024/1024,status from v$log;GROUP# MEMBERS BYTES/1024/1024 STATUS---------- ---------- --------------- ----------------1 1 50 INACT…

算法竞赛入门经典 第一章 上机练习(C++代码)

//平均数&#xff08;average&#xff09; //输入3个整数&#xff0c;输出它们的平均值&#xff0c;保留3位小数。 #include<iostream> #include<iomanip> using namespace std; int main() { int a,b,c; cin>>a>>b>>c; double average(abc)/3; …

CMake 编译 OpenCV 项目,不是编译OpenCV, 用了之后才知道CMake也太好用了。

新建一个 CMakeList.txt 复制下面代码&#xff0c;并保存 cmake_minimum_required (VERSION 3.0)PROJECT(Chapter2)set (CMAKE_CXX_STANDARD 11)IF(EXISTS ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)conan_basic_setup() E…

Java Ajax jsonp 跨域请求

2019独角兽企业重金招聘Python工程师标准>>> 1. 什么是JSONP 一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通&#xff0c;而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略&#xff0c;网页…

对IEnumerableT,IDictionaryTkey,TValue,ICollectionT,IListT的总结

1、IEnumerable<T>接口和IEnumerable接口 实现了IEnumerable接口的集合表明该集合能够提供一个enumerator(枚举器)对象&#xff0c;支持当前的遍历集合。IEnumerable接口只有一个成员GetEnumerator()方法。 IEnumerator接口实现了IEnumerator接口的集合实现了从一个元素到…

Backup--修改实例级别是否使用压缩备份的默认值

-- --修改实例级别是否使用压缩备份的默认值 USE master; GO EXEC sp_configure backup compression default, 1; RECONFIGURE WITH OVERRIDE;转载于:https://www.cnblogs.com/TeyGao/p/3519952.html

Java学习——Java运算符

位运算符 A 0011 1100 B 0000 1101 ----------------- A&b 0000 1100 A | B 0011 1101 A ^ B 0011 0001A << 2 1111 0000A >>> 2 0000 1111 ~A 1100 0011 例子 package import_test;public class Employee {public static void main(String args[])…

学习Python中用numpy与matplotlib遇到的一些数学函数与函数的绘图

学习Python中的一些数学函数与函数的绘图 主要用到numpy 与 matplotlib 如果有什么不正确&#xff0c;欢迎指教。 图片不知道怎样批量上传&#xff0c;一个一个怎么感觉很小&#xff0c;请见谅 自行复制拷贝&#xff0c;到vs&#xff0c;jupyter notebook, spyder都可以 函…

控制台输出

getchar() system("pause") getch()//<conio.h>转载于:https://www.cnblogs.com/lzihua/archive/2012/03/29/2422988.html

Linux基础之文件权限详解

Linux中对于权限的制定虽然没有Windows的那么精细&#xff0c;但是如果你了解并掌握Linux中文件的权限知识&#xff0c;也可以像Windows那样对权限做到精确配置。Linux中的文件权限是什么&#xff1f;如何查看Linux中的文件权限[rootlocalhost test]# ll -d /test/drwxr-xr-x. …

有这个OCR程序,不用再买VIP了,Python 调用百度OCR API

最近学习&#xff0c;很多东西都是视频&#xff0c;截图后&#xff0c;又想做成文档保存起来。 刚开始不多&#xff0c;打一下字就很快解决了。 随着时间的推移&#xff0c;现在越来越多的图了&#xff0c;管理起来确实不方便&#xff0c;打字有时也不能很快的解决。 所以就…

android apk如何入门

android自己摸索了6,7个月不知道算不算入门&#xff01;对了只是应用层apk! 说说我的情况&#xff01;有C语言基础&#xff0c;没有接触过JAVA语言。 1.先找视频教程看&#xff0c;mars老师的&#xff01;不要理会java语言&#xff01;4季一气看完&#xff01; 看了这个视频教程…

linux常用命令_Linux常用命令全称

从事IT行业的很多人都会使用Linux常用命令&#xff0c;但是知道这些常用命令全称的人并不多&#xff0c;让我们来看看这些常用命令对应的全称吧&#xff01;必备Linux命令和C语言基础_C语言_嵌入式开发工程师-创客学院​www.makeru.com.cnpwd:print work directory 打印当前目录…

存储程序(1)——MYSQL

MySQL支持把几种对象存放在服务器端供以后使用。这几种对象有一些可以根据情况通过程序代码调用&#xff0c;有一些会在数据表被修改时自动执行&#xff0c;还有一些可以在预定时刻自动执行。它们包括以下几种: 1.存储函数(stored function)。返回一个计算结果&#xff0c;该结…

闯过这 54 关,点亮你的 Git 技能树 (五) - 完结篇

这是一个系列文章&#xff0c;介绍学习 Git 的一个小游戏 - githug&#xff0c;如果你是第一次看到&#xff0c;请先阅读&#xff1a;闯过这 54 关&#xff0c;点亮你的 Git 技能树闯过这 54 关&#xff0c;点亮你的 Git 技能树&#xff08;一&#xff09;闯过这 54 关&#xf…

Jupyter notebook 不安装主题,通过修改css更改 默认字体,字体大小等

目标&#xff1a; Jupyter notebook 又不想改更主题的的情况下&#xff0c;可以通过修改css的目的来达到修改默认的字体&#xff0c;字号心达到可以好的阅读效果。 方法 要修改的css文件目录如下&#xff0c; D:\Anaconda\Lib\site-packages\notebook\static\custom 这个就是…

项亮 陈义 王益《推荐系统实践》

最近很多读者关注《推荐系统实践》一书&#xff0c;询问本书目前的写作进展和出版时间。自今日起&#xff0c;本书正式进入开放出版流程&#xff0c;作者会全程在本社区中互动&#xff0c;与大家分享写做过程中的点滴。 技术背景 推荐系统从1994年开始&#xff0c;经过Amazon&a…

坚果nuts 加速 官网_【喂你播】坚果手机2020新品发布会来了;三星定向华为手机推以旧换新...

周五喂diu 不只有你们爱的女主播 还有小编呢BGM&#xff1a;Make You Hustle-Croatia Squad坚果手机2020新品发布会来了坚果手机正式宣布&#xff1a;坚果手机2020新品发布会将于10月20日19:30在五棵松M空间举行。根据此前爆料&#xff0c;坚果手机新品或命名为坚果Pro4&#x…

不可不知的Oracle常用技巧

不可不知的Oracle常用技巧 表复制 1.方法一&#xff1a;复制表结构和数据 create table temp_clientloginuser as select distinct userid from tbuserloginlog; 2.方法二&#xff1a;仅复制数据 -- 如果表结构一样 insert into mytable select * from yourtable; -- 如果表结构…