import cv2 # 讀取圖片 img = cv2.imread("img1.jpg") # 生成灰色圖片 imgGrey = cv2.imread("img1.jpg",0) # 展現原圖 cv2.imshow("img",img) # 展現灰色圖片 cv2.imshow("imgGrey",img) # 等待圖片的關閉 cv2.waitKey() # 保存圖片 cv2.imwrite("Copy.jpg",imgGrey)
cv2.namedWindow(創空名,屬性)建立一個窗口
屬性通常指定窗口大小模式:
cv2.WINDOW_AUTOSIZE:根據圖像大小自動建立大小
cv2.WINDOW_NORMAL:窗口大小可調整
cv2.destoryAllWindows(窗口名)刪除任何創建的窗口python
import cv2 img = cv2.imread("img",cv2.WINDOW_NORMAL) cv2.imshow("img",img) cv2.waitKey() cv2.destoryAllWindows()
img.shape 返回圖像高(圖像矩形的行數)、(圖像矩形的列數)和通道數3個屬性組成的元祖(png爲4通道),若圖像是非彩色圖,則只返回高和寬組成的元祖。windows
import cv2 img = cv2.imread("1.jpg") imgGrey = cv2.imread("1.jpg",0) sp1 = img.shape sp2 = imgGrey.shape print(sp1) print(sp2) # =====輸出====== # (800,800,3) # (800,800)
圖像矩形img的size屬性和dtype分別對象圖像的像素總數目和圖像數據類型。通常狀況下,圖像的數據類型是unit8。函數
import cv2 img = cv2.imread("1.jpg") imgSize = img.size print(imgSize) ty = img.dtype print(ty) # ====輸出===== # 691200 # uint8
生成指定大小的空圖像字體
import cv2 import numpy as np img = cv2.imread("1.jpg") imgZero = np.zeros(img.shape,np.uint8) imgFix = np.zeros((300,500,3),np.uint8) cv2.imshow("img",img) cv2.imshow("imgZero",imgZero) cv2.imshow("imgFix",imgFix) cv2.waitKey()
cv2.circle(圖片,圓心位置,圓半徑,顏色,-1)ui
import cv2 import numpy as np imgZero = np.zeros((400),np.uint8) cv2.namedWindow('draw circles') cv2.circle(img,(200,200),200,(0,0,255,255),-1) cv2.imshow("imgGrey",img) cv2.waitKey() cv2.imwrite("Copy.png",img)
OpenCV中圖像矩陣的順序是B、G、R。能夠直接經過座標位置訪問和操做圖像像素。code
import cv2 img = cv2.imread("01.jpg") numb = img[50,100] print(numb) img[50,100] = (0,0,255) cv2.imshow("img",img) cv2.waitKey()
分開訪問圖像某一通道像素orm
import cv2 img = cv2.imread("01.jpg") img[0:100,100:200,0] = 255 img[100:200,200:300,1] = 255 img[200:300,300,400,2] = 255 cv2.imshow("img",img) cv2.waitKey
更改圖像某一矩形區域的圖像值也很方便對象
import cv2 img = cv2.imread("01.jpg") img[0:50,1:100] = (0,0,255) cv2.imshow("img",img) cv2.waitKey()
分離圖像通道能夠使用cv2中的split函數,合併使用merge函數排序
import cv2 img = cv2.imread("01.jpg") b , g , r = cv2.split(img) merged = cv2.merge([b,g,r]) cv2.imshow("Blue",b) cv2.imshow("Green",g) cv2.imshow()"Red",r) cv2.imshow("Merged",merged) cv2.waitKey()
使用putText函數在圖片上輸出文字,函數原型:
putText(img,text,org,fontFace,fontScale,color,thickness=None,lineType=None,bottomLeftOrigin=None)圖片
img = cv2.imread("01.jpg") cv2.putTtext(img,"Print some text to img",(100,100),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255)) cv2.imshow("img",img) cv2.waitKey()
import cv2 img = cv2.imread("1.jpg") cv2.imshow("img",img) imgg = cv2.resize(img,(200,100)) cv2.imshow("imgg",imgg) cv2.waitKey()
from matplotlib import pyplot as plt import cv2 form pylab import * #添加中文字體支持 from matplotlib.font_manager import FontProperties fot = FontProperties(fname = r"c:\windows\fonts\SimSun,ttc",size = 14) # 載入圖像 im = cv2.imread("1.jpg") # 顯示原始圖像 fig = plt.figure() subplot(121) plt.gray() im2 = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) # OpenCV採用BGR排序,須要轉換一下 imshow(im2) title(u'彩色圖',fontproperties= font) axis('off') # 顯示灰度化圖像 # 顏色空間轉換 gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) plt.subplot(122) plt.gray() imshow(gray) title(u"灰度圖",fontproperties=font) axis('off') show()