国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

我在Vscode學OpenCV 處理圖像

這篇具有很好參考價值的文章主要介紹了我在Vscode學OpenCV 處理圖像。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

既然我們是面向Python的OpenCV(OpenCV for Python)那我們就必須要熟悉Numpy這個庫,尤其是其中的數組的庫,Python是沒有數組的,唯有借助他庫才有所實現想要的目的。

# 老三樣庫--事先導入
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

二、圖像的認識

2.1圖像的表示

2.1.1 單通道__二值圖像

二值圖像是指僅僅包含黑色和白色兩種顏色的圖像。

白色像素點(白色小方塊區(qū)域)處理為“1”,將黑色像素點(黑色小方塊區(qū)域)處理為“0”,以方便進行后續(xù)的存儲和處理等操作

例如:二維碼和條形碼就是簡單的二值
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

2.1.2 單通道__灰度圖像

二值圖像表示起來簡單方便,但是因為其僅有黑白兩種顏色,所表示的圖像不夠細膩。如果想要表現更多的細節(jié),就需要使用更多的顏色。能夠表示的信息更多了

 256 個灰度級,用數值區(qū)間[0, 255]來表示,中,
 數值“255”表示純白色,數值“0”表示純黑色.
# 處理圖像
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img =np.zeros((256,256,3),np.uint8)
plt.imshow(img[:,:,::-1])

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

隨機抓取一點看:
x=np.random.randint(0,256)
y=np.random.randint(0,256)
img[x,y],x,y

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide
再次隨機

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

2.1.3 多通道__RGB彩色圖像

自然界:紅色、綠色和藍色,即三基色(按照一定的比例混合構成。)
要區(qū)別于美術中的三原色:紅黃藍

色彩空間:
從光學角度出發(fā)可以將顏色解析為主波長,純度,明度等,
從心理學角度和視覺角度出發(fā)可以將顏色解析為色調,飽和度,亮度等,我們將這些采用不同方式表達顏色的模式稱為色彩空間。

RGB三個通道,每個通道取值[0,255]之間,組合表示顏色。共可以調配出所有常見的 256×256×256=16,777,216種顏色。

RGB=(R*65536)+(G*256)+B
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

以#FFF為例子

#FFF是#FFFFFF的簡稱
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide
其他顏色
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

區(qū)別于OpenCV的通道

在RGB的色彩空間之中是以R,G,B的順序存儲的,然而在OpenCV中的通道是B,G,R
即:在處理圖像的時候,需要對指定的圖像通道順序進行轉換。除此以外,還可以根據需要對不同色彩空間的圖像進行類型轉換(灰度圖像處理為二值圖像,將彩色圖像處理灰度圖)

比方說,掃描二維碼的時候,我們需要01的黑白畫面就可以,不需要[0,255]的復雜

2.2 逐點處理(逐像素)并操作

像素的一格一格的小點來描述圖像,現在有numpy和matplotlib.pyplot就相當于在二位的直角坐標系中的第二象限,就能夠通過索引的形式對我們設定的圖像或者導入的圖像進行操作,訪問。
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

img[1,1]=(0,0,255)
plt.imshow(img[:,:,::-1])

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

2.2.1 灰度圖像

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

首先使用 Numpy 庫來生成一個 n×m 大小的數組,用來模擬一個黑色圖像.

使用 Numpy 庫中的函數 zeros()可以生成一個元素值都是 0 的數組
img=np.zeros((n,m),dtype=np.uint8

二維數組與圖像之間存在對應關系。
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

(1)如何證明plt和cv2的的灰度圖是一樣的

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 讀取圖像
img = cv2.imread("./Pic/f2e919585490afd1bebd313257e7ad9.jpg", 0)

# # 使用cv2.imwrite將OpenCV數組圖像保存為圖像文件
# cv2.imwrite('./Pic/f2e919585490afd1bebd313257e7ad9.jpg', img)

# 如果你想要讀取并顯示保存后的圖像,可以執(zhí)行以下代碼
saved_img = cv2.imread('./Pic/f2e919585490afd1bebd313257e7ad9.jpg', 0)
plt.imshow(saved_img, cmap='gray')
plt.title('Saved Image')
print(img==saved_img)

(2)避免錯誤:TypeError: unsupported operand type(s) for -: 'AxesImage' and 'int'

即:不可直接比較,需要將周圖像的信息轉換為數組的形式,一一對比。[軸圖像無法和numpy數組]
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

軸圖像轉換為數組形式plt.imread或plt.imsave
import matplotlib.pyplot as plt

# 讀取Matplotlib圖像并將其轉換為數組
image_plt = plt.imread('your_image_path.jpg')

# 現在,image_plt是一個包含圖像像素數據的NumPy數組
# 你可以對它進行處理或進行其他操作

或者,如果你要保存Matplotlib圖像到文件中,你可以使用plt.imsave函數:

import matplotlib.pyplot as plt

# 創(chuàng)建一個示例圖像(這是一個例子,你可以替換它為你自己的圖像數據)
image_data = ...  # 這里應該是一個NumPy數組

# 使用plt.imsave保存NumPy數組為圖像文件
plt.imsave('output_image.jpg', image_data)

通過這兩種方法,你可以在Matplotlib圖像和NumPy數組之間進行相互轉換。注意,如果你使用了一些Matplotlib特定的繪圖函數來創(chuàng)建圖像,你可以使用plt.gcf()獲取當前的圖形對象,然后使用savefig方法將其保存為圖像文件。

(3)plt就顯示是正常的顏色。參數 cmap

在使用 Matplotlib 繪制圖像時,可以使用不同的 colormap(顏色映射)來表示單通道圖像,例如使用 cmap=‘gray’ 來顯示灰度圖像。對于四通道的圖像,Matplotlib 也可以正確地顯示透明度(Alpha)通道。

這是由于plt的映射到在灰度圖像中,你只有一個通道,表示亮度值,但你可以使用不同的 Colormap 來表示這些亮度值。

cool 包含青綠色和品紅色的陰影色。從青綠色平滑變化到品紅色。
gray 返回線性灰度色圖。
bone 具有較高的藍色成分的灰度色圖。該色圖用于對灰度圖添加電子的視圖。

opencv是BGR通道,plt默認RGB通道,若使用cv2.imread()讀入圖像,用plt.imshow()展示原始圖像或者展示對讀入圖像進行一系列操作后的圖像時,需要進行通道轉換。

顯示灰度圖像:

import matplotlib.pyplot as plt
import cv2

# 讀取灰度圖像
gray_image = cv2.imread('gray_image.png', cv2.IMREAD_GRAYSCALE)

# 顯示灰度圖像
plt.imshow(gray_image, cmap='gray')
plt.show()

顯示四通道圖像(RGBA):

import matplotlib.pyplot as plt
import cv2

# 讀取四通道圖像
rgba_image = cv2.imread('rgba_image.png', cv2.IMREAD_UNCHANGED)

# 顯示四通道圖像,包括透明度通道
plt.imshow(rgba_image)
plt.show()

cmap 是 Matplotlib 中的參數,用于指定顏色映射(Colormap),它決定了如何將數據值映射到顏色。Colormap 是一種顏色表,可以將數值數據映射到對應的顏色。它在繪制單通道圖像或圖表時非常有用,以幫助可視化數據。

Colormap 并不是通道的意思,而是指定如何將單一通道的數值映射到顏色的規(guī)則。在灰度圖像中,你只有一個通道,表示亮度值,但你可以使用不同的 Colormap 來表示這些亮度值。

Matplotlib 提供了多種內置的 Colormap,一些常見的包括:

  1. 'viridis':從紫色到黃綠色的顏色映射,用于表示數據值的連續(xù)變化。
  2. 'jet':經典的彩虹顏色映射。
  3. 'gray':灰度顏色映射,用于表示單通道圖像,將較暗的值映射為黑色,較亮的值映射為白色。
  4. 'copper':銅色顏色映射,常用于表示表面溫度。

你可以在 Matplotlib 中使用 cmap 參數來指定所使用的顏色映射。例如:

import matplotlib.pyplot as plt
import numpy as np

# 創(chuàng)建一個示例的單通道數據
data = np.random.random((10, 10))

# 使用'viridis' Colormap來繪制數據
plt.imshow(data, cmap='viridis')
plt.colorbar()  # 顯示顏色條
plt.show()

這將使用 ‘viridis’ Colormap 來表示數據中不同值的顏色。你可以根據你的需求選擇合適的 Colormap 來更好地可視化你的數據。不同的 Colormap 可以傳達不同的信息和情感。

(4)避免少cmap的參數出現的問題
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=np.ones((200,800,3),dtype=np.uint8)
img[:] = 255

cv2.imshow("this",img)
plt.imshow(img, cmap='gray')
cv2.waitKey(0)

cv2.destroyAllWindows()
img

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

(5)修改像素點

函數 item()能夠更加高效地訪問圖像的像素點,該函數的語法格式為:
item(行,列)
函數 itemset()可以用來修改像素值,其語法格式為:
itemset(索引值,新值

import numpy as np
img=np.random.randint(10,99,size=[5,5],dtype=np.uint8)
print("img=\n",img)
print("讀取像素點 img.item(3,2)=",img.item(3,2))
img.itemset((3,2),255)
print("修改后 img=\n",img)
print("修改后像素點 img.item(3,2)=",img.item(3,2))

隨機生成一張灰度圖

img=np.random.randint(0,256,size=[256,256],dtype=np.uint8)
cv2.imshow("demo",img)
 cv2.waitKey() 
 cv2.destroyAllWindows()

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide**我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide
**

2.2.2 彩色圖像

RGB 模式的彩色圖像在讀入 OpenCV 內進行處理時,會反向的讀取圖像像素BGR,并存儲在ndarray中。其中的BGR為三維數組

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

import numpy as np
import cv2
#-----------藍色通道值--------------
blue=np.zeros((300,300,3),dtype=np.uint8)
blue[:,:,0]=255
print("blue=\n",blue)
cv2.imshow("blue",blue)
#-----------綠色通道值--------------
green=np.zeros((300,300,3),dtype=np.uint8)
green[:,:,1]=255
print("green=\n",green)
cv2.imshow("green",green)
#-----------紅色通道值--------------
red=np.zeros((300,300,3),dtype=np.uint8)
red[:,:,2]=255
print("red=\n",red)
cv2.imshow("red",red)
#-----------釋放窗口--------------
cv2.waitKey()
cv2.destroyAllWindows()

修改像素點

函數 item()訪問 RGB 模式圖像的像素值時,其語法格式為:
item(行,列,通道)
函數 itemset()修改(設置)RGB 模式圖像的像素值時,其語法格式為:
itemset(三元組索引值,新值)
需要注意,針對 RGB 圖像的訪問,必須同時指定行、列以及行列索引(通道),例如
img.item(a,b,c)。僅僅指定行和列是不可以的

import numpy as np
img=np.random.randint(10,99,size=[2,4,3],dtype=np.uint8)
print("img=\n",img)
print("讀取像素點 img[1,2,0]=",img.item(1,2,0))
print("讀取像素點 img[0,2,1]=",img.item(0,2,1))
print("讀取像素點 img[1,0,2]=",img.item(1,0,2))
img.itemset((1,2,0),255)
img.itemset((0,2,1),255)
img.itemset((1,0,2),255)
print("修改后 img=\n",img)2 章 圖像處理基礎
27
print("修改后像素點 img[1,2,0]=",img.item(1,2,0))
print("修改后像素點 img[0,2,1]=",img.item(0,2,1))
print("修改后像素點 img[1,0,2]=",img.item(1,0,2))

生成一幅彩色圖像,讓其中的像素值均為隨機數。 根據題目要求,編寫代碼如下: import cv2

import numpy as np
> img=np.random.randint(0,256,size=[256,256,3],dtype=np.uint8)
> cv2.imshow("demo",img)
> cv2.waitKey()
> cv2.destroyAllWindows()

2.2.3 感興趣區(qū)域(ROI)【待處理】

ROI(region of interest),感興趣區(qū)域。機器視覺、圖像處理中,從被處理的圖像以方框、圓、橢圓、不規(guī)則多邊形等方式勾勒出需要處理的區(qū)域,稱為感興趣區(qū)域,ROI。在Halcon、OpenCV、Matlab等機器視覺軟件上常用到各種算子(Operator)和函數來求得感興趣區(qū)域ROI,并進行圖像的下一步處理。

import cv2
img-cv2.imread(圖像名稱)x=img[200:400,200:400]

從被處理的圖像以方框、圓、橢圓、不規(guī)則多邊形等方式勾勒出需要處理的區(qū)域。
可以通過各種算子(Operator)和函數來求得感興趣區(qū)域ROI,并進行圖像的下一步處理。

2.3 圖像的屬性

圖像的屬性
、
屬性— API
形狀 img.shape
圖像大小 img.size
數據類型 img.dtype

? shape:如果是彩色圖像,則返回包含行數、列數、通道數的數組;如果是二值圖像或者灰度圖像,則僅返回行數和列數。通過該屬性的返回值是否包含通道數,可以判斷一幅圖像是灰度圖像(或二值圖像)還是彩色圖像。

? size:返回圖像的像素數目。其值為“行×列×通道數”,灰度圖像或者二值圖像的通道數為 1。

? dtype:返回圖像的數據類型

2.4 通道的操作

針對 OpenCV 內的 BGR
圖像 img,如下語句分別從中提取了 B 通道、G 通道、R 通道。

b = img[ : , : , 0 ]
g = img[ : , : , 1 ]
r = img[ : , : , 2 ]

2.4.1 cv2.split()能夠拆分圖像的通道

b,g,r=cv2.split(img)
#通道拆分
b,g,r=cv.split(newimg)
拆分后就是單通道,需要灰度圖

plt.imshow(b,cmap=plt.cm.gray)
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide
我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

2.4.2 cv2.merge()可以實現圖像通道的合并

newimg=cv2.merge([b,g,r])

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

2.5 色彩轉變

2.5.1 色彩空間轉換

gray=cv.cvtColor(newimg,cv.COLOR_BGR2GRAY)
# plt.imshow(gray)

要以灰度圖顯示

plt.imshow(gray,cmap=plt.cm.gray)

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide

轉換為HSV
hsv=cv.cvtColor(newimg,cv.COLOR_BGR2HSV)
plt.imshow(hsv)

我在Vscode學OpenCV 處理圖像,OpenCV,vscode,opencv,ide文章來源地址http://www.zghlxwxcb.cn/news/detail-742095.html

到了這里,關于我在Vscode學OpenCV 處理圖像的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 我在Vscode學OpenCV 圖像處理一(閾值處理、形態(tài)學操作【連通性,腐蝕和膨脹,開閉運算,禮帽和黑帽,內核】)

    我在Vscode學OpenCV 圖像處理一(閾值處理、形態(tài)學操作【連通性,腐蝕和膨脹,開閉運算,禮帽和黑帽,內核】)

    例如,設定閾值為127,然后: ? 將圖像內所有像素值大于 127 的像素點的值設為 255。 ? 將圖像內所有像素值小于或等于 127 的像素點的值設為 0。 cv2.threshold() 和 cv2.adaptiveThreshold() 是 OpenCV 中用于實現閾值處理的兩個函數,它們之間有以下區(qū)別: 1.1.1. cv2.threshold(): 這個函數

    2024年02月05日
    瀏覽(32)
  • 我在Vscode學OpenCV 初步接觸

    我在Vscode學OpenCV 初步接觸

    OpenCV是一個開源的計算機視覺庫,可以處理圖像和視頻數據。它包含了超過2500個優(yōu)化過的算法,用于對圖像和視頻進行處理,包括目標識別、面部識別、運動跟蹤、立體視覺等。OpenCV支持多種編程語言,包括C++、Python、Java等,可以在Windows、Linux、Mac OS X、Android等多個平臺上

    2024年02月08日
    瀏覽(23)
  • 我在Vscode學OpenCV 色彩空間轉換

    我在Vscode學OpenCV 色彩空間轉換

    即是顏色,一種人體視覺系統(tǒng)對光的反射的 不同波長 的感知的結果。人們又對不同的波長范圍的電磁波定義可視光的“顏色”。 在日常生活、美術課中,通過把(紅黃藍)三種顏色成為”認為是能夠混合得到其他所有顏色的顏料。 而對于光學,就把(紅綠藍 RGB )三基色【

    2024年02月05日
    瀏覽(31)
  • 我在Vscode學OpenCV 基本的加法運算

    我在Vscode學OpenCV 基本的加法運算

    鏈接:《我在Vscode學OpenCV 處理圖像》 屬性— API 形狀 img.shape 圖像大小 img.size 數據類型 img.dtype ? shape:如果是彩色圖像,則返回包含行數、列數、通道數的數組;如果是二值圖像或者灰度圖像,則僅返回行數和列數。通過該屬性的返回值是否包含通道數,可以判斷一幅圖像

    2024年02月05日
    瀏覽(23)
  • 我在Vscode學OpenCV 幾何變換(縮放、翻轉、仿射變換、透視、重映射)

    我在Vscode學OpenCV 幾何變換(縮放、翻轉、仿射變換、透視、重映射)

    幾何變換指的是將一幅圖像映射到另一幅圖像內的操作。 cv2.warpAffine :使用仿射變換矩陣對圖像進行變換,可以實現平移、縮放和旋轉等操作。 cv2.warpPerspective :使用透視變換矩陣對圖像進行透視變換,可以實現鏡頭校正、圖像糾偏等操作。 cv2.getAffineTransform :計算仿射變換

    2024年02月05日
    瀏覽(33)
  • 解決VScode遠程服務器時opencv和matplotlib無法直接顯示圖像的問題

    解決VScode遠程服務器時opencv和matplotlib無法直接顯示圖像的問題

    問題描述 :在VSCode中通過SSH連接服務器,使用cv2.imshow或plt.show()無法顯示圖像。 并且VScode與MobaXterm可以ssh到遠程服務器 參數說明: 保持MobaXterm開啟的狀態(tài)下,在VSCode中運行xclock,會顯示一個時鐘。

    2024年02月14日
    瀏覽(32)
  • SSH通過VSCode遠程訪問服務器Opencv和matplotlib等無法直接顯示圖像問題

    SSH通過VSCode遠程訪問服務器Opencv和matplotlib等無法直接顯示圖像問題

    需求描述: 在VSCode中通過SSH連接服務器,使用cv2.imshow或plt.show()無法顯示圖像。 解決思路如下: 1、首先查看與服務器之間的網絡連接問題(百分之九十問題就是出在第一步驟,哈哈哈) 在本地端打開cmd,使用指令ping xxx.xxx.xxx.xxx,其中(xxx.xxx.xxx.xxx為服務器的IP地址) 在

    2024年02月15日
    瀏覽(28)
  • vscode搭建OpenCV環(huán)境(默認已經有了vscode)

    vscode搭建OpenCV環(huán)境(默認已經有了vscode)

    @[TOC](這里寫目錄標題) # 一.文件下載: ## 1.MinGW下載 ## 2.Cmake下載 ## 3.Opencv下載 # 二.配置環(huán)境變量: # 三.vscode 配置 ## 1、launch.json ## 2、c_ cpp_ properties json ## 3、tasks json # 四.測試 1.MinGW下載(MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net) 單獨在一個盤里面新建一個文

    2024年02月06日
    瀏覽(21)
  • windows vscode使用opencv

    windows vscode使用opencv

    1.windows vscode使用opencv 參考:https://blog.csdn.net/zhaiax672/article/details/88971248 https://zhuanlan.zhihu.com/p/402378383 https://blog.csdn.net/weixin_39488566/article/details/121297536 安裝opencv 原料: 手 地球人使用的IO設備 MinGW編譯器(8.1.0的版本) 編譯好的build:https://gitee.com/kirigaya/opencv_built_by_gcc_on_-wi

    2024年02月12日
    瀏覽(23)
  • 在VSCode中使用Opencv

    在VSCode中使用Opencv

    本文描述在VSCode工具下使用Opencv的詳細步驟 由于Opencv在官網中的發(fā)行版并不適用于VSCode,所以使用VSCode不能使用Opencv官網中的發(fā)行版。因此就有兩個選擇: 在其它網站上下載Opencv編譯好的文件(本文不講); 在官網下載源碼并本地編譯。 本地編譯 本地編譯需要MinGW,這個東

    2024年02月15日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包