python中openCV無法自動補全、代碼提示

python中openCV無法自動補全

https://blog.csdn.net/newMiao001/article/details/88796557

解決方法:
添加cv2路徑到系統環境中。

 

靜態環境變量:
添加庫所在路徑到Path環境變量中。

 

動態加載:
修改cv2文件夾下的init.py文件。

init中的代碼:
import sys
import os
import importlib
os.environ["PATH"] += os.pathsep + os.path.dirname(os.path.realpath(__file__))
 
from .cv2 import *
from .data import *
 
# wildcard import above does not import "private" variables like __version__
# this makes them available
globals().update(importlib.import_module('cv2.cv2').__dict__)
 
————————————————
版權聲明:本文爲CSDN博主「newMiao001」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/newMiao001/article/details/88796557

 


打開pycharm,將python interpreter配置成功後,輸入以下代碼發現

此時的imread函數的顏色與其他代碼不同,其實是因爲pycharm認爲這裏有錯誤,因爲在cv2文件夾下的 init.py文件中沒有imread函數,並且按住ctrl+左鍵也不會進入提示,這讓開發人員非常痛苦,下面講如何解決這個問題。

在opencv的安裝路徑中的pyd文件複製到site-package路徑下
首先,找到opencv庫的安裝目錄,其實我們知道,通過pip install 安裝的module都會自動安裝到python.exe安裝目錄下的site-packages路徑下面,opencv模塊的文件夾名稱爲cv2,我們也可以通過pip install opencv-python安裝結束的提示找到opencv模塊的安裝路徑,那麼找到cv2文件夾以後,進入cv2文件夾中,發現有一個 cv2.cp37-win_amd64.pyd 文件,我們需要將這個文件修改名字爲 cv2.pyd之後拷貝到site-packages路徑下,爲了防止錯誤,我們也可以將 cv2.cp37-win_amd64.pyd 複製一份到site-pachages路徑下然後改名,這樣再重新打開pycharm軟件,就會發現有提示了,並且函數的使用方法也會有提示,可以說十分方便哦,
————————————————
分析原因
爲什麼將pyd文件複製到site-packages路徑下後就能夠代碼提示了呢,再pycharm中ctrl+左鍵可以發現,原來site-packages添加cv2.pyd文件後,用戶路徑下的.Pycharmxxxx路徑下面就會產生新的cv2模塊的 init.py 文件,雖然這段代碼中沒有opencv的源代碼,但是說明了opencv庫函數的使用方法,對於我們開發人員來說也是非常方便了。
————————————————
版權聲明:本文爲CSDN博主「Tianxiadatong1001」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Tianxiadatong1001/article/details/87959884

 


pycharm PIL沒有代碼提示的解決辦法

用PIL處理圖像時沒有代碼提示是不是很不爽?

from PIL import Image
 
img = Image.open('f15.png')
print(img.format)
print(img.mode)
print(img.size)
原因:
python是動態強類型語言,IDE無法判斷Image.open("f15.png")的返回值類型,無法根據參數類型自動補全

解決:
類型註釋:
加上# type: Image.Image就可以了

from PIL import Image
 
img = Image.open('f15.png')# type: Image.Image
print(img.format)
print(img.mode)
print(img.size)
om = img.convert('L')
om.save('hd.png')
 使用isinstance指定:
assert isinstance(img, Image.Image)

from PIL import Image
 
img = Image.open('f15.png')
assert isinstance(img, Image.Image)
print(img.format)
print(img.mode)
print(img.size)
om = img.convert('L')
om.save('hd.png')
指定類型:
""":type: Image.Image"""

from PIL import Image
 
img = Image.open('f15.png')
""":type: Image.Image"""
# assert isinstance(img, Image.Image)
print(img.format)
print(img.mode)
print(img.size)
om = img.convert('L')
om.save('hd.png')
 
————————————————
版權聲明:本文爲CSDN博主「西奧斯」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/h18208975507/article/details/103239458

 

 

 

發佈了98 篇原創文章 · 獲贊 158 · 訪問量 158萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章