從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級(jí)功能(最新推薦)
從基礎(chǔ)到實(shí)踐,深入學(xué)習(xí)。無論你是初學(xué)者還是經(jīng)驗(yàn)豐富的老手,對(duì)于本專欄案例和項(xiàng)目實(shí)踐都有參考學(xué)習(xí)意義。
每一個(gè)案例都附帶關(guān)鍵代碼,詳細(xì)講解供大家學(xué)習(xí),希望可以幫到大家。正在不斷更新中~
從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級(jí)功能
OpenCV(Open Source Computer Vision Library)是一個(gè)開源的計(jì)算機(jī)視覺庫,廣泛應(yīng)用于圖像處理、計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)領(lǐng)域。Python作為一種高效的編程語言,與OpenCV的結(jié)合使得開發(fā)者能夠更快速地實(shí)現(xiàn)視覺處理任務(wù)。本文將詳細(xì)介紹如何在Python環(huán)境中配置和安裝OpenCV,并提供一些代碼實(shí)例幫助你快速入門。
1. 安裝OpenCV的步驟
1.1. 環(huán)境準(zhǔn)備
在安裝OpenCV之前,確保你的計(jì)算機(jī)上已經(jīng)安裝了Python。如果還未安裝,請(qǐng)?jiān)L問Python官網(wǎng)下載并安裝最新版本的Python。
1.2. 使用pip安裝OpenCV
OpenCV可以通過Python的包管理工具pip
來安裝。打開終端(或命令提示符),執(zhí)行以下命令:
pip install opencv-python
這將安裝OpenCV的主模塊。如果你需要更多的功能,例如額外的模塊或優(yōu)化過的版本,可以安裝opencv-python-headless
(不包含GUI功能):
pip install opencv-python-headless
1.3. 驗(yàn)證安裝
安裝完成后,可以通過Python交互式解釋器(或腳本)驗(yàn)證OpenCV是否成功安裝。運(yùn)行以下代碼:
import cv2 print(cv2.__version__)
如果正確安裝,將輸出OpenCV的版本號(hào)。例如,4.5.3
。
2. 基本的OpenCV操作實(shí)例
以下是一些使用OpenCV進(jìn)行基本圖像處理的示例代碼,包括讀取、顯示、保存圖像和基本的圖像處理操作。
2.1. 讀取和顯示圖像
以下代碼示例演示如何讀取圖像文件并顯示它:
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 顯示圖像 cv2.imshow('Image', image) # 等待用戶按下任意鍵 cv2.waitKey(0) # 關(guān)閉所有OpenCV窗口 cv2.destroyAllWindows()
確保example.jpg
文件存在于你的工作目錄中。運(yùn)行這段代碼后,會(huì)彈出一個(gè)窗口顯示圖像,按下任意鍵將關(guān)閉窗口。
2.2. 圖像處理:轉(zhuǎn)換為灰度圖像
將彩色圖像轉(zhuǎn)換為灰度圖像可以通過以下代碼完成:
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 將圖像轉(zhuǎn)換為灰度 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 顯示灰度圖像 cv2.imshow('Gray Image', gray_image) cv2.waitKey(0) cv2.destroyAllWindows()
2.3. 圖像處理:圖像平滑
使用高斯模糊進(jìn)行圖像平滑:
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 應(yīng)用高斯模糊 blurred_image = cv2.GaussianBlur(image, (15, 15), 0) # 顯示模糊圖像 cv2.imshow('Blurred Image', blurred_image) cv2.waitKey(0) cv2.destroyAllWindows()
2.4. 圖像處理:邊緣檢測(cè)
使用Canny邊緣檢測(cè)算法:
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 轉(zhuǎn)換為灰度圖像 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 應(yīng)用Canny邊緣檢測(cè) edges = cv2.Canny(gray_image, 100, 200) # 顯示邊緣圖像 cv2.imshow('Edges', edges) cv2.waitKey(0) cv2.destroyAllWindows()
3. 進(jìn)階配置與優(yōu)化
3.1. 配置OpenCV的額外功能
如果需要使用OpenCV的額外功能,如深度學(xué)習(xí)模塊(dnn)或高級(jí)圖像處理功能,你可能需要安裝帶有擴(kuò)展功能的OpenCV版本??梢酝ㄟ^源碼編譯的方式來實(shí)現(xiàn),但這需要一定的配置和編譯知識(shí)。
3.2. 使用Conda進(jìn)行安裝
如果你使用Anaconda作為Python環(huán)境管理工具,可以通過Conda來安裝OpenCV:
conda install -c conda-forge opencv
這種方式可以確保所有依賴項(xiàng)都得到正確配置,尤其是在處理復(fù)雜的環(huán)境時(shí)。
4. 進(jìn)階配置與優(yōu)化
在使用OpenCV的過程中,你可能會(huì)遇到需要優(yōu)化性能或配置額外功能的場(chǎng)景。以下是一些進(jìn)階配置和優(yōu)化的方法:
4.1. 使用Conda進(jìn)行安裝
Conda是一個(gè)流行的包管理工具,可以簡(jiǎn)化OpenCV及其依賴項(xiàng)的安裝過程,尤其是在復(fù)雜的環(huán)境中。以下是使用Conda安裝OpenCV的步驟:
創(chuàng)建新環(huán)境(可選):
conda create -n opencv_env python=3.8
替換python=3.8
為你需要的Python版本。
激活環(huán)境:
conda activate opencv_env
安裝OpenCV:
conda install -c conda-forge opencv
Conda會(huì)自動(dòng)處理所有依賴項(xiàng)和兼容性問題,使得安裝過程更加順利。
4.2. 編譯OpenCV源碼
如果你需要自定義配置或啟用額外的功能,可以從源碼編譯OpenCV。以下是編譯OpenCV的步驟:
安裝依賴項(xiàng):
在Linux系統(tǒng)上,你可以使用以下命令安裝依賴項(xiàng):
sudo apt-get update sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
對(duì)于其他系統(tǒng),依賴項(xiàng)的安裝方式可能會(huì)有所不同。
下載OpenCV源碼:
git clone https://github.com/opencv/opencv.git cd opencv
創(chuàng)建構(gòu)建目錄并生成構(gòu)建文件:
mkdir build cd build cmake ..
如果需要啟用額外的功能或模塊,可以在cmake
命令中添加選項(xiàng)。例如,啟用CUDA支持:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=ON ..
編譯和安裝:
make -j$(nproc) sudo make install
這將編譯OpenCV并將其安裝到/usr/local
目錄。
4.3. 性能優(yōu)化
對(duì)于性能要求較高的應(yīng)用,以下是一些優(yōu)化建議:
啟用多線程和并行計(jì)算:
OpenCV支持多線程和并行計(jì)算,可以通過調(diào)整編譯選項(xiàng)或在運(yùn)行時(shí)配置來優(yōu)化性能。例如,啟用TBB(Threading Building Blocks)可以提高并行計(jì)算性能:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON ..
利用GPU加速:
OpenCV支持CUDA加速,可以顯著提高圖像處理性能。編譯時(shí)啟用CUDA支持,并使用OpenCV的CUDA模塊來加速計(jì)算。注意,這需要具有NVIDIA GPU的支持。
優(yōu)化內(nèi)存使用:
在處理大圖像或視頻流時(shí),優(yōu)化內(nèi)存使用非常重要。使用cv2.UMat
代替cv2.Mat
可以自動(dòng)處理內(nèi)存優(yōu)化。示例如下:
import cv2 # 讀取圖像到UMat image = cv2.imread('example.jpg', cv2.IMREAD_UNCHANGED) # 使用UMat進(jìn)行處理 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
5. OpenCV高級(jí)功能示例
5.1. 人臉檢測(cè)
OpenCV提供了多種預(yù)訓(xùn)練的模型來進(jìn)行人臉檢測(cè)。以下示例演示如何使用Haar級(jí)聯(lián)分類器進(jìn)行人臉檢測(cè):
import cv2 # 加載預(yù)訓(xùn)練的人臉檢測(cè)模型 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') # 讀取圖像 image = cv2.imread('example.jpg') # 轉(zhuǎn)換為灰度圖像 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 檢測(cè)人臉 faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # 繪制檢測(cè)到的人臉 for (x, y, w, h) in faces: cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2) # 顯示結(jié)果 cv2.imshow('Detected Faces', image) cv2.waitKey(0) cv2.destroyAllWindows()
5.2. 使用深度學(xué)習(xí)進(jìn)行對(duì)象檢測(cè)
OpenCV支持使用深度學(xué)習(xí)模型進(jìn)行對(duì)象檢測(cè)。以下示例演示如何使用YOLO模型進(jìn)行對(duì)象檢測(cè):
import cv2 import numpy as np # 加載YOLO模型 net = cv2.dnn.readNet('yolov3.weights', 'yolov3.cfg') layer_names = net.getLayerNames() output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] # 讀取圖像 image = cv2.imread('example.jpg') height, width, channels = image.shape # 進(jìn)行預(yù)處理 blob = cv2.dnn.blobFromImage(image, 0.00392, (416, 416), (0, 0, 0), True, crop=False) net.setInput(blob) outs = net.forward(output_layers) # 解析檢測(cè)結(jié)果 class_ids = [] confidences = [] boxes = [] for out in outs: for detection in out: for obj in detection: scores = obj[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: center_x = int(obj[0] * width) center_y = int(obj[1] * height) w = int(obj[2] * width) h = int(obj[3] * height) x = int(center_x - w / 2) y = int(center_y - h / 2) boxes.append([x, y, w, h]) confidences.append(float(confidence)) class_ids.append(class_id) # 繪制檢測(cè)結(jié)果 indices = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4) for i in indices: i = i[0] box = boxes[i] x, y, w, h = box[0], box[1], box[2], box[3] cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2) # 顯示結(jié)果 cv2.imshow('Detected Objects', image) cv2.waitKey(0) cv2.destroyAllWindows()
5.3. 圖像變換與濾波
OpenCV提供了豐富的圖像變換和濾波函數(shù)。以下示例演示如何應(yīng)用仿射變換和透視變換:
import cv2 import numpy as np # 讀取圖像 image = cv2.imread('example.jpg') # 仿射變換 rows, cols, ch = image.shape pts1 = np.float32([[50, 50], [200, 50], [50, 200]]) pts2 = np.float32([[10, 100], [200, 50], [100, 250]]) M = cv2.getAffineTransform(pts1, pts2) affine_image = cv2.warpAffine(image, M, (cols, rows)) # 透視變換 pts1 = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]]) pts2 = np.float32([[0, 0], [300, 0], [0, 300], [300, 300]]) M = cv2.getPerspectiveTransform(pts1, pts2) perspective_image = cv2.warpPerspective(image, M, (300, 300)) # 顯示結(jié)果 cv2.imshow('Affine Transform', affine_image) cv2.imshow('Perspective Transform', perspective_image) cv2.waitKey(0) cv2.destroyAllWindows()
6. 高級(jí)功能與應(yīng)用場(chǎng)景
在掌握了OpenCV的基本操作后,你可以深入探討一些更高級(jí)的功能和應(yīng)用場(chǎng)景。以下是一些常見的高級(jí)應(yīng)用,包括視頻分析、實(shí)時(shí)對(duì)象檢測(cè)、圖像拼接以及特征匹配。
6.1. 視頻分析
OpenCV支持實(shí)時(shí)視頻處理和分析。以下示例演示如何從攝像頭捕捉視頻流并進(jìn)行簡(jiǎn)單的圖像處理,如邊緣檢測(cè):
import cv2 # 打開攝像頭 cap = cv2.VideoCapture(0) while True: # 讀取幀 ret, frame = cap.read() if not ret: break # 轉(zhuǎn)換為灰度圖像 gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 應(yīng)用Canny邊緣檢測(cè) edges = cv2.Canny(gray_frame, 100, 200) # 顯示處理后的幀 cv2.imshow('Edges', edges) # 按 'q' 鍵退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 釋放攝像頭并關(guān)閉所有窗口 cap.release() cv2.destroyAllWindows()
在這個(gè)示例中,程序不斷從攝像頭捕捉幀,將其轉(zhuǎn)換為灰度圖像,并應(yīng)用Canny邊緣檢測(cè)。按下 ‘q’ 鍵將退出程序。
6.2. 實(shí)時(shí)對(duì)象檢測(cè)
實(shí)時(shí)對(duì)象檢測(cè)可以使用深度學(xué)習(xí)模型來識(shí)別視頻流中的對(duì)象。以下示例演示如何使用YOLO模型進(jìn)行實(shí)時(shí)對(duì)象檢測(cè):
import cv2 import numpy as np # 加載YOLO模型 net = cv2.dnn.readNet('yolov3.weights', 'yolov3.cfg') layer_names = net.getLayerNames() output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] # 打開攝像頭 cap = cv2.VideoCapture(0) while True: # 讀取幀 ret, frame = cap.read() if not ret: break # 進(jìn)行預(yù)處理 blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False) net.setInput(blob) outs = net.forward(output_layers) # 解析檢測(cè)結(jié)果 class_ids = [] confidences = [] boxes = [] height, width, channels = frame.shape for out in outs: for detection in out: for obj in detection: scores = obj[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: center_x = int(obj[0] * width) center_y = int(obj[1] * height) w = int(obj[2] * width) h = int(obj[3] * height) x = int(center_x - w / 2) y = int(center_y - h / 2) boxes.append([x, y, w, h]) confidences.append(float(confidence)) class_ids.append(class_id) # 繪制檢測(cè)結(jié)果 indices = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4) for i in indices: i = i[0] box = boxes[i] x, y, w, h = box[0], box[1], box[2], box[3] cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) # 顯示結(jié)果 cv2.imshow('Real-time Object Detection', frame) # 按 'q' 鍵退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 釋放攝像頭并關(guān)閉所有窗口 cap.release() cv2.destroyAllWindows()
這個(gè)示例將YOLO模型應(yīng)用于實(shí)時(shí)視頻流,以檢測(cè)和標(biāo)記視頻中的對(duì)象。
6.3. 圖像拼接
圖像拼接(Image Stitching)用于將多張圖像合成為一張全景圖像。以下示例演示如何使用OpenCV進(jìn)行簡(jiǎn)單的圖像拼接:
import cv2 # 讀取圖像 images = [cv2.imread('image1.jpg'), cv2.imread('image2.jpg')] # 創(chuàng)建拼接器 stitcher = cv2.createStitcher() if cv2.__version__.startswith('4') else cv2.createStitcher(True) # 執(zhí)行拼接 status, stitched_image = stitcher.stitch(images) if status == cv2.Stitcher_OK: # 顯示結(jié)果 cv2.imshow('Stitched Image', stitched_image) cv2.waitKey(0) cv2.destroyAllWindows() else: print('Error during stitching')
在此示例中,createStitcher()
用于創(chuàng)建一個(gè)拼接器,并將圖像拼接成一個(gè)全景圖像。如果拼接成功,將顯示結(jié)果。
6.4. 特征匹配
特征匹配用于比較和匹配圖像中的相似特征點(diǎn)。以下示例演示如何使用SIFT(尺度不變特征變換)進(jìn)行特征匹配:
import cv2 # 讀取圖像 img1 = cv2.imread('image1.jpg') img2 = cv2.imread('image2.jpg') # 轉(zhuǎn)換為灰度圖像 gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) # 創(chuàng)建SIFT檢測(cè)器 sift = cv2.SIFT_create() # 檢測(cè)特征點(diǎn)和描述符 kp1, des1 = sift.detectAndCompute(gray1, None) kp2, des2 = sift.detectAndCompute(gray2, None) # 創(chuàng)建BFMatcher對(duì)象 bf = cv2.BFMatcher(cv2.NORM_L2, crossCheck=True) # 匹配描述符 matches = bf.match(des1, des2) # 按照距離排序 matches = sorted(matches, key=lambda x: x.distance) # 繪制匹配結(jié)果 img_matches = cv2.drawMatches(img1, kp1, img2, kp2, matches[:10], None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS) # 顯示結(jié)果 cv2.imshow('Feature Matches', img_matches) cv2.waitKey(0) cv2.destroyAllWindows()
在這個(gè)示例中,SIFT特征檢測(cè)器用于檢測(cè)特征點(diǎn)和描述符,并使用BFMatcher進(jìn)行特征匹配。結(jié)果會(huì)顯示前10個(gè)匹配對(duì)。
7. 自定義OpenCV模塊
在某些情況下,你可能需要自定義OpenCV模塊來滿足特定需求。以下是如何創(chuàng)建和使用自定義模塊的一些基本步驟:
7.1. 創(chuàng)建自定義模塊
定義模塊:
創(chuàng)建一個(gè)Python腳本來定義你的自定義模塊。例如,my_custom_module.py
:
import cv2 import numpy as np def custom_filter(image): # 應(yīng)用自定義濾鏡 kernel = np.array([[1, 1, 1], [1, -7, 1], [1, 1, 1]]) return cv2.filter2D(image, -1, kernel)
使用自定義模塊:
在你的主腳本中導(dǎo)入并使用自定義模塊:
import cv2 from my_custom_module import custom_filter # 讀取圖像 image = cv2.imread('example.jpg') # 應(yīng)用自定義濾鏡 filtered_image = custom_filter(image) # 顯示結(jié)果 cv2.imshow('Filtered Image', filtered_image) cv2.waitKey(0) cv2.destroyAllWindows()
7.2. 擴(kuò)展OpenCV功能
如果需要將自定義算法或功能集成到OpenCV庫中,可以參考OpenCV的開發(fā)文檔,了解如何編寫和編譯C++擴(kuò)展模塊。有關(guān)詳細(xì)信息,請(qǐng)?jiān)L問OpenCV官方開發(fā)文檔.
8. 結(jié)語
通過本文的介紹,你已經(jīng)掌握了Python與OpenCV的安裝配置、基本和高級(jí)功能的使用方法。OpenCV的強(qiáng)大功能不僅限于基本的圖像處理,還可以擴(kuò)展到實(shí)時(shí)視頻分析、復(fù)雜的圖像拼接和特征匹配等應(yīng)用場(chǎng)景。隨著你的深入學(xué)習(xí)和實(shí)踐,你將能夠利用OpenCV實(shí)現(xiàn)更復(fù)雜和具有挑戰(zhàn)性的計(jì)算機(jī)視覺任務(wù)。
到此這篇關(guān)于從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級(jí)功能的文章就介紹到這了,更多相關(guān)Python與OpenCV配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- opencv-python 開發(fā)環(huán)境的安裝、配置教程詳解
- VS2019+python3.7+opencv4.1+tensorflow1.13配置詳解
- python3 使用Opencv打開USB攝像頭,配置1080P分辨率的操作
- python 下 CMake 安裝配置 OPENCV 4.1.1的方法
- Anaconda下配置python+opencv+contribx的實(shí)例講解
- Ubuntu16.04/樹莓派Python3+opencv配置教程(分享)
- Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
- 淺談配置OpenCV3 + Python3的簡(jiǎn)易方法(macOS)
相關(guān)文章
Django shell調(diào)試models輸出的SQL語句方法
今天小編就為大家分享一篇Django shell調(diào)試models輸出的SQL語句方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python使用pymupdf實(shí)現(xiàn)PDF內(nèi)容搜索并顯示功能
在日常工作和學(xué)習(xí)中,我們可能需要查找和提取PDF文件中的特定內(nèi)容,本文將介紹如何使用pymupdf實(shí)現(xiàn)PDF內(nèi)容搜索并顯示的功能,需要的可以參考下2023-08-08pytorch在fintune時(shí)將sequential中的層輸出方法,以vgg為例
今天小編就為大家分享一篇pytorch在fintune時(shí)將sequential中的層輸出方法,以vgg為例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08下載python中Crypto庫報(bào)錯(cuò):ModuleNotFoundError: No module named ‘Cry
Crypto不是自帶的模塊,需要下載。下面這篇文章主要給大家介紹了關(guān)于下載python中Crypto庫報(bào)錯(cuò):ModuleNotFoundError: No module named 'Crypto'的解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下。2018-04-04python 實(shí)現(xiàn)多線程下載視頻的代碼
這篇文章主要介紹了python 實(shí)現(xiàn)多線程下載視頻的代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11TensorFlow卷積神經(jīng)網(wǎng)絡(luò)MNIST數(shù)據(jù)集實(shí)現(xiàn)示例
這篇文章主要介紹了TensorFlow卷積神經(jīng)網(wǎng)絡(luò)MNIST數(shù)據(jù)集的實(shí)現(xiàn)示例的過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11使用Python正則表達(dá)式操作文本數(shù)據(jù)的方法
這篇文章主要介紹了使用Python正則表達(dá)式操作文本數(shù)據(jù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05Pytorch深度學(xué)習(xí)addmm()和addmm_()函數(shù)用法解析
這篇文章主要為大家介紹了Pytorch中addmm()和addmm_()函數(shù)用法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python2與Python3的區(qū)別實(shí)例總結(jié)
這篇文章主要介紹了Python2與Python3的區(qū)別,結(jié)合實(shí)例形式總結(jié)分析了Python2與Python3打印輸出、編碼、數(shù)值運(yùn)算、異常處理等使用區(qū)別,需要的朋友可以參考下2019-04-04