import cv2 as cv
import numpy as np
def access_pixels(image):
print(image.shape)#獲取影象高,寬,通道數
height = image.shape[0]#第乙個是高
width = image.shape[1]#第二個是寬
channels = image.shape[2]#第三個是通道數,
print("width : %s, height : %s channels : %s"%(width, height, channels))
for row in range(height):
for col in range(width):
for c in range(channels):
pv = image[row, col, c]#獲取三維陣列
image[row, col, c] = 255 - pv#畫素取反,修改每個畫素點每個通道灰度值
cv.imshow("pixels_demo", image)
def create_image():
img = np.zeros([400, 400, 3], np.uint8)#建立乙個三維陣列高400,寬400,訊號通道3個,初始都為0,每通道佔8位,型別是uint8
m1 = np.ones([3, 3], np.uint8)#不允許小數的存在,且有最大是255
m1.fill(12222.388)
print(m1)
m2 = m1.reshape([1, 9])
print(m2)
m3 = np.array([[2,3,4], [4,5,6],[7,8,9]], np.int32)
#m3.fill(9)
print(m3)
"""img = np.zeros([400, 400, 3], np.uint8)#建立乙個三維陣列高400,寬400,訊號通道3個,初始都為0,每通道佔8位個
#img[: , : , 0] = np.ones([400, 400])*255 #0通道代表b #將0號通道下[400,400]面積使用ones設定為1,之後乘以255,將其設定為255,注意:3個通道分別是b,g,r所以這裡顯示為藍色
img[:, :, 2] = np.ones([400, 400]) * 255 #1通道代表g,綠色,2代表b,藍色
cv.imshow("new image", img)
#np.ones函式引數型別是uint8,是因為uint8數的範圍為0~255, 那麼為0時恰好為黑色,為255時恰好為白色
#若函式引數型別為int8,則int8型別數的範圍為-128~127,那麼-128則為黑色,127為白色
img = np.ones([400, 400, 1], np.uint8)#設定資料全部為1,單通道資料
img = img * 0#0是黑色,127,灰色
t1 = cv.gettickcount()#獲取當前cpu
access_pixels(src)
t2 = cv.gettickcount()
time = (t2-t1)/cv.gettickfrequency()#得出秒數(毫秒級別)
print("time : %s ms"%(time*1000))
cv.waitkey(0)
OpenCV 三 Mat畫素操作
算數操作與調整影象的亮度和對比度 core.addweighted mat src1,double alpha,mat src2,double bate,double gamma,mat dst 這種方法的公式描述 dst src1 alpha src2 gamma src1 表示輸入的第乙個mat...
OpenCV基礎篇之畫素訪問
filename get pixels.cpp author xiahouzuoxin 163.com version v1.0 date sun 01 jun 2014 06 40 54 pm cst brief include include using namespace std using ...
Opencv基礎自學八(洪水填充)
import cv2 as cv import numpy as np def fill color demo image copyimg image.copy 轉殖原圖 h,w image.shape 2 拿出寬高 mask np.zeros h 2,w 2 np.uint8 這個是固定,要求引數...