Python OpenCV 圖片基礎知識&操作

  1. Python OpenCV Image Fundamentals and Manipulation
    1. 圖片形態 numpy.ndarray:
    2. 嘗試把圖片的某個區塊變成RGB雜訊:
    3. 嘗試把圖片的某個區塊copy 然後paste到某個位置:

Python OpenCV Image Fundamentals and Manipulation

圖片形態 numpy.ndarray:

由此可知圖片是numpy.ndarray, img.shape的channels就是顏色有三個space:

Example
import cv2

img = cv2.imread("assets/img01.jpg", 1)

#1
print(type(img))
#2
print(img.shape) 
#3
print(img[3000][2000])

輸出結果

#1
<class ‘numpy.ndarray’>
#2
(6000, 4000, 3) ##(rows,columns,channels) ##(height,width,channels)
#3
[103 90 104] ##印出那個圖片第3000px*2000px點的BGR參數

嘗試把圖片的某個區塊變成RGB雜訊:

如果圖片太大就用resize

Example
import cv2
import random

img = cv2.imread("assets/img01.jpg", 1)

for i in range(100):
    for j in range(img.shape[1]):
        img[i][j] = [random.randint(0, 255),random.randint(0, 255),random.randint(0, 255)]
        
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結果:

嘗試把圖片的某個區塊copy 然後paste到某個位置:

這邊要注意的地方是: 8和9行的數字相差要同等

Example

import cv2
import random

img = cv2.imread("assets/img02.jpeg", 1)
#可以用原圖的 pixel*fx 和 fy 就可得出resize後的圖片(長*寬)
# img = cv2.resize(img, (0,0), fx=0.2, fy=0.2) #自己計算大小是否相對於 要處理的tag框

tag = img[100:550,250:600]
img[100:550, 550:900] = tag

#copy後處理resize,與28行不同
img = cv2.resize(img, (0,0), fx=0.5, fy=0.5) 

cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

輸出結果:


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 kimfei2014@gmail.com
github