openCV入門 核心操作 1 影像的基礎操作
基礎函式
img[100, 100] = [255, 255, 255]
#img[100,100]是影像座標,[255,255,255]是畫素值
img[100, 100, 0]
#b:0,g:1,r:2
img.item(10, 10, 2)
#獲取r(分割r,g,b)
img.itemset((10, 10, 2), 100)
#修改畫素值(修改r,b,g)
img.shape
#輸出影像 行數、列數、通道數的元組
img.size
#返回影像的畫素數目 = 行數*列數*通道數
img.dtype
#返回影像的資料型別 (uint8)
ball = img[280:340, 330:390]
img[273:333, 100:160] = ball
#把影像的特定區域拷貝到影像的其他區域
b,g,r = cv2.split(img)
#b = img[:,:,0]
#拆分
img = cv2.merge(b,g,r)
#合併
img[:,:,2] = 0
cv2.copyMakeBorder()
#ret = cv2.copyMakeBorder(img, row, row, col, col, cv2.BORDER_CONSTANT)
#輸入影像,相應方向(上下左右)的邊框寬度,填充的值的方式
#cv2.BORDER_CONSTANT:新增的邊界框畫素值為常數(需要額外再給定一個引數)
#cv2.BORDER_REFLECT:新增的邊框畫素將是邊界元素的鏡面反射,類似於gfedcb|abcdefgh|gfedcba
#cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT:和上面類似,但是有一些細微的不同,類似於gfedcb|abcdefgh|gfedcba
#cv2.BORDER_REPLICATE:使用最邊界的畫素值代替
plt.subplot()
#連續繪製多個圖
#plt.subplot( numRows, numCols, plotNum)
# 整個Figure會被劃分為numRows行,numCols列,並從左往右,從上往下編號為1,2…。也就是說plotNum指定了子圖所在的位置。
# 此外,如果三個引數的都小於10,則可以簡寫在一起,例如:subplot(4,3,2)也可以寫成subplot(432)
# 例如:plt.subplot(222)表示將整個影像視窗分為2行2列, 當前位置為2.
plt.imshow()
#顯示圖片,同時也顯示其格式。
plt.title()
#plt.title(‘Interesting Graph’,fontsize=‘large’,fontweight=‘bold’) 設定字型大小與格式
#plt.title(‘Interesting Graph’,color=‘blue’) 設定字型顏色
#plt.title(‘Interesting Graph’,loc =‘left’) 設定字型位置
#plt.title(‘Interesting Graph’,verticalalignment=‘bottom’) 設定垂直對齊方式
#plt.title(‘Interesting Graph’,rotation=45) 設定字型旋轉角度
#plt.title(‘Interesting’,bbox=dict(facecolor=‘g’, edgecolor=‘blue’, alpha=0.65 )) 標題邊框
獲取並修改畫素值
import cv2
import numpy as np
img = cv2.imread ('imag.jpg')
print (img.item(10,10,2))
#第十行,第十列的r值,,,(b,g,r)
img.itemset((10,10,2),100)
#或img[:,:,2] = 100
#用100代替r,成為新的r值
print (img.item(10,10,2))
獲取影像屬性
import cv2
import numpy as np
img = cv2.imread ('imag.jpg')
print img.shape
#輸出影像 行數、列數、通道數的元組
print img.size
#返回影像的畫素數目 = 行數*列數*通道數
print img。dtype
#返回影像的資料型別 (uint8)
影像RoI
import cv2
import numpy as np
img = cv2.imread ('imag.jpg')
ball=img[280:340,330:390]
img[273:333,100:160]=bal
#把影像的特定區域拷貝到影像的其他區域
拆分及合併影像通道
import cv2
import numpy as np
img = cv2.imread ('imag.jpg')
b,g,r=cv2.split(img)
#拆分 或b=img[:,:,0]
img=cv2.merge(b,g,r)
#合併
#或img[:,:,2]=0
為影像擴邊(填充)
import cv2
import numpy as np
from matplotlib import pyplot as plt
BLUE=[255,0,0]
img1=cv2.imread('sz.jpg')
replicate = cv2.copyMakeBorder(img1,50,50,50,50,cv2.BORDER_REPLICATE)
#cv2.BORDER_REPLICATE:使用最邊界的畫素值代替
reflect = cv2.copyMakeBorder(img1,50,50,50,50,cv2.BORDER_REFLECT)
#cv2.BORDER_REFLECT:新增的邊框畫素將是邊界元素的鏡面反射,類似於gfedcb|abcdefgh|gfedcba
reflect101 = cv2.copyMakeBorder(img1,50,50,50,50,cv2.BORDER_REFLECT_101)
#cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT:和上面類似,但是有一些細微的不同,類似於gfedcb|abcdefgh|gfedcba
wrap = cv2.copyMakeBorder(img1,50,50,50,50,cv2.BORDER_WRAP)
constant=cv2.copyMakeBorder(img1,50,50,50,50,cv2.BORDER_CONSTANT,value=BLUE)
#cv2.BORDER_CONSTANT:新增的邊界框畫素值為常數(需要額外再給定一個引數)
plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')
# 例如:plt.subplot(232)表示將整個影像視窗分為2行3列, 當前位置為2
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
#plt.imshow(replicate,'gray') = cv2.imshow('gray',replicate)
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')
#plt.title() 圖注
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')
plt.show()
效果
相關文章
- Docker | 入門 & 基礎操作Docker
- pytorch入門- tensor基礎操作(1)PyTorch
- C++之OpenCV入門到提高005:005 影像操作C++OpenCV
- Linux入門學習(1基礎操作命令)Linux
- opencv 影像的入門OpenCV
- 小白入門使用Nginx基礎的常用操作Nginx
- Python 影像處理 OpenCV (1):入門PythonOpenCV
- 零基礎學習Alfred(一):入門操作Alfred
- Oracle表空間操作詳解-入門基礎Oracle
- Mybatis入門——基礎操作(基於springboot專案)MyBatisSpring Boot
- Redis 入門 - 1(基本 key 操作)Redis
- Python基礎入門(9)- Python檔案操作Python
- Elasticsearch(1):基礎入門Elasticsearch
- Docker 入門(Mac環境)-part 1 入門基本操作DockerMac
- OpenCV入門 2_1中使用【總結】的程式碼載入影像、顯示影像報錯OpenCV
- MyBatis基礎:MyBatis入門(1)MyBatis
- Dubbo入門(1) - 基礎概念
- opencv - 1 - 初入門徑OpenCV
- Docker 入門操作Docker
- git 入門操作Git
- elasticsearch 基礎操作Elasticsearch
- Redis基礎操作Redis
- MongoDB基礎操作MongoDB
- 入門級的Git操作Git
- Ninx 基礎入門補充1
- 【WEB基礎】HTML & CSS 基礎入門(1)初識WebHTMLCSS
- OpenCV與影像處理學習二——影像基礎知識(下)OpenCV
- Java核心基礎第4篇-Java陣列的常規操作Java陣列
- jQuery入門-DOM操作jQuery
- SQLite入門操作(一)SQLite
- sap入門--操作指南
- midjourney 入門操作
- DRF基礎操作流程
- linux基礎操作Linux
- Mongodb-基礎操作MongoDB
- JavaSE基礎:日期操作Java
- 【Docker】Docker基礎操作Docker
- 【PG】PG基礎操作