日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python 计算机视觉(二) —— OpenCV 基础

發(fā)布時間:2025/3/19 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 计算机视觉(二) —— OpenCV 基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

1. 安裝配置

2. OpenCV 基礎(chǔ)語法

(1)讀取圖像并顯示

?(2)調(diào)整顯示窗口大小

(3)調(diào)整圖像尺寸大小

(4)圖像灰度處理

3. 幾何圖形繪制

(1)繪制線段

(2)繪制矩形

(3)繪制圓形

(4)繪制橢圓

(5)添加文本?

總結(jié)


1. 安裝配置

打開 Pycharm --> 點擊 File --> 點擊 Settings

點擊 Project Interpreter --> 點擊 + 號

?

搜索 OpenCV 選擇合適的進(jìn)行安裝即可

2. OpenCV 基礎(chǔ)語法

(1)讀取圖像并顯示

代碼如下:
我都進(jìn)行了注釋,以大家的聰明才智我想是小菜一碟

import cv2 # 調(diào)用opencv包 img = cv2.imread('E:\Python\StudyOfOpencv\琪琳.jpeg') #讀取圖像位置 cv2.namedWindow("demo") #對顯示圖像的窗口進(jìn)行命名 cv2.imshow("demo", img) #顯示圖像 cv2.waitKey(delay = 0) #無限期等待下一個命令

運(yùn)行上面所示的代碼(當(dāng)然讀取圖像路徑要和你的圖像存儲位置一致)?

我們可以得出。。。。報錯了!!

報錯內(nèi)容如下

cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-sn_xpupm\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
?

其實這是因為我們的存儲路徑中包含中文導(dǎo)致的,把圖像命名為英文并修改路徑即可

import cv2 # 調(diào)用opencv包 img = cv2.imread('E:\Python\StudyOfOpencv\qilin.jpeg') #讀取圖像位置 cv2.namedWindow("demo") #對顯示圖像的窗口進(jìn)行命名 cv2.imshow("demo", img) #顯示圖像 cv2.waitKey(delay = 0) #無限期等待下一個命令

?然后我們按回車鍵就可以退出當(dāng)前的窗口?

?至于按下回車就可以退出窗口與我們前面設(shè)置的 delay 有關(guān)

delay > 0:窗口等待delay 毫秒;

delay < 0:等待鍵盤單擊;

delay = 0:無限期等待;

?(2)調(diào)整顯示窗口大小

從顯示出來的圖像我們可以看出,窗口的尺寸過大,導(dǎo)致整個屏幕都沒辦法完全顯示出來,所以我們要嘗試改變窗口的尺寸并進(jìn)行顯示

改變窗口大小使用的是函數(shù):

cv2.resizeWindow("windowname", width, height)

得到效果如下,注意是對窗口尺寸大小進(jìn)行調(diào)整而不是圖像尺寸大小?

(3)調(diào)整圖像尺寸大小

此處參考:?Opencv-python(cv2)改變圖像尺寸的cv2.resize()函數(shù)

上面修改窗口的尺寸后雖然有效果,但圖像的大小不進(jìn)行修改則會對顯示的圖像進(jìn)行截取,沒辦法讓我們觀察到完整的圖像

調(diào)整圖像的大小,我們主要使用到的函數(shù)是 cv2.resize() ,對其一些參數(shù)進(jìn)行調(diào)整,得到想要的圖像

data = cv2.resize(img, dsize = None, fx = 0.5, fy = 0.5,interpolation = cv2.INTER_LINEAR) #將顯示的圖像寬和高都變?yōu)橐话?cv2.imshow("demo", data) #顯示圖像

運(yùn)行后就可以得到如下的圖像:

(4)圖像灰度處理

import cv2 # 調(diào)用opencv包 img = cv2.imread('E:\Python\StudyOfOpencv\qilin.jpeg') #讀取圖像位置 cv2.namedWindow("demo") #對顯示圖像的窗口進(jìn)行命名 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #對圖像進(jìn)行灰度處理 cv2.imshow("demo", img_gray) #顯示灰度圖像 cv2.waitKey(delay = 0) #無限期等待下一個命令

其中下面指出的這一句代碼

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #對圖像進(jìn)行灰度處理

它是對圖像的通道進(jìn)行修改,如果需要加強(qiáng)學(xué)習(xí)的可以參考:cvCvtColor函數(shù)

得到如下的灰度圖像?

3. 幾何圖形繪制

(1)繪制線段

使用 cv2.line() 函數(shù)就可以繪制線段

import cv2 # 調(diào)用opencv包 import numpy as np img1 = np.ones((500, 500, 3), np.uint8) #創(chuàng)建一張圖像 cv2.line(img1, (140, 160), (140, 320), (0, 0, 255), 3, cv2.LINE_AA) #繪制線段 cv2.imshow(" Image ", img1) cv2.waitKey(delay = 0)

得到下面的圖像:?

?

然后我們對代碼進(jìn)行簡單修改,觀察圖像發(fā)生的改變:

import cv2 # 調(diào)用opencv包 import numpy as np img1 = np.ones((500, 500, 3), np.uint8) #創(chuàng)建一張圖像 cv2.line(img1, (140, 160), (140, 320), (0, 255, 0), 3, cv2.LINE_AA) #繪制線段 cv2.imshow(" Image ", img1) cv2.waitKey(delay = 0)

?

觀察上面兩處代碼的不同,注意在 cv 庫中改變顏色是 BGR 而不是 RGB??

如果想對圖像顏色進(jìn)行調(diào)整,可以參考下面的文章:

RGB顏色表

下面整個活兒:

img1 = np.ones((500, 500, 3), np.uint8) #創(chuàng)建一張圖像 cv2.line(img1, (120, 40), (300, 40), (255, 0, 0), 3, cv2.LINE_AA) cv2.line(img1, (300, 40), (290, 180), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段 cv2.line(img1, (195, 50), (185, 190), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段 cv2.line(img1, (185, 190), (320, 190), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段 cv2.line(img1, (320, 190), (310, 340), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段 cv2.line(img1, (310, 340), (290, 320), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段 cv2.line(img1, (120, 280), (280, 265), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段 cv2.imshow(" Image ", img1) cv2.waitKey(delay = 0)

?

(2)繪制矩形

首先像上面演示的那樣可以根據(jù)線段的起點和終點繪制矩形

也可以使用?cv2.rectangle(圖像,矩形左上角坐標(biāo),矩形右下角坐標(biāo),顏色) 函數(shù)進(jìn)行矩形的繪制:

cv2.rectangle(img1, (100, 200), (280, 280), (0, 255, 0), 3, cv2.LINE_AA) cv2.rectangle(img1, (80, 180), (300, 300), (0, 255, 0), 3, cv2.LINE_AA) cv2.imshow(" Image ", img1) cv2.waitKey(delay = 0)

?

(3)繪制圓形

繪制圓只要知道其圓心坐標(biāo)和半徑就可以了

使用 cv2.circle(圖像,圓心坐標(biāo),半徑,顏色,是否填充)?就可以繪制圓了

cv2.circle(img1, (250, 250), 100, (0, 0, 255), -1) #-1代表進(jìn)行填充 cv2.imshow(" Image ", img1) cv2.waitKey(delay = 0)

?

(4)繪制橢圓

使用?cv2.ellipse(圖像,圓心坐標(biāo),長軸&短軸,起始角度,終止角度,顯示弧長的角度,顏色,是否填充)就可以了?

cv2.ellipse(img1, (256, 256), (100, 50), 0, 0, 360, (0, 255, 0), -1) cv2.imshow(" Image ", img1) cv2.waitKey(delay = 0)

?

(5)添加文本?

使用 cv2.puttext(圖像,繪制的文字,位置,字體,縮放,顏色,線寬) 就可以進(jìn)行文本的添加了

下面在上圖中添加文本

cv2.putText(img1, 'OpenCV', (230, 450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)

?

總結(jié)

這篇文章主要介紹了 OpenCv 中的幾個基礎(chǔ)語法(讀取圖像、顯示圖像、改變圖像大小等)以及繪制一些簡單的幾何圖像(線段、圓形、橢圓、矩形等),為后面的學(xué)習(xí)打下基礎(chǔ)

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Python 计算机视觉(二) —— OpenCV 基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。