def access_pixel(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("pixel_demo",image)
def inverse(image): #畫素取反,呼叫opencv中的庫,時間複雜度小了很多
dst = cv.bitwise_not(image) #bitwise_not是的邏輯運算
cv.imshow("pixels demo",dst)
這兩段**都是畫素取反的操作,它們的不同之處是,access_pixel(image)函式是自己定義的,而bitwise_not(image)函式是opencv庫中的函式。這兩者的時間複雜度有很大差別。下面給出求它們時間複雜度的**:
t0 = cv.gettickcount() #輸入執行時間
access_pixel(src)
t1 = cv.gettickcount()
time = (t1 - t0)/cv.gettickfrequency()
print("time:%s ms"%(time * 1000)) #輸出執行時間
t0 = cv.gettickcount() #輸出執行時間
inverse(src)
t1 = cv.gettickcount()
time = (t1 - t0)/cv.gettickfrequency()
print("time:%s ms"%(time * 1000)) #輸出執行時間
def create_image(): #基於bgr顏色模型建立三通道的,初始化即建立
img = np.zeros([400,400,3],np.uint8)
img[:,:,0] = np.ones([400,400])*255 #0就是藍色,1是綠色,2是紅色
cv.imshow("new image",img)
import cv2 as cv
import numpy as np
def access_pixel(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("pixel_demo",image)
def inverse(image): #畫素取反,呼叫opencv中的庫,時間複雜度小了很多
dst = cv.bitwise_not(image) #bitwise_not是的邏輯運算
cv.imshow("pixels demo",dst)
def create_image(): #建立三通道的,初始化即建立
img = np.zeros([400,400,3],np.uint8)
img[:,:,0] = np.ones([400,400])*255
#初始化用ones更快一點
############### img = np.ones([400,400,3],np.uint8)
############### img = img * 255
cv.imshow("new image",img)
#cv.imwrite("f:/opencv/4.png",img) #儲存
def create_image1(): #建立一通道的
img = np.zeros([400,400,1],np.uint8)
img[:,:,0] = np.ones([400,400])*255
cv.imshow("new image1",img)
def create_image2(): #顯示出二維的資料
t0 = cv.gettickcount() #輸入執行時間
access_pixel(src) #呼叫inverse(src),比較兩者之間執行時間的大小
t1 = cv.gettickcount()
time = (t1 - t0)/cv.gettickfrequency()
print("time:%s ms"%(time * 1000)) #輸出執行時間
create_image()
create_image1()
create_image2()
cv.waitkey(0)
cv.destroyallwindows()
不同版本的python共用乙個opencv
相關參考 unzip opencv 3.3.0.zip cd opencv 3.3.0 cmake d with gtk 2 x on d cmake install prefix usr local make j8 make j8表示開8個執行緒來進行編譯 make install 編譯完成之後o...
基於S3C2440的bootloader移植詳解
首先 在彙編中初始化堆疊,中斷向量表,mmu,時鐘,串列埠等,然後跳到c語言的main函式。這部分 小於4k,放在block0。這個main函式用來將第二段 拷備到dram中並執行。不說這麼多廢話了,說多了無益,讓我們一起來揭開bootloader的神秘的面紗吧!先說下我移植的bootloader的...
基於HTTPS的介面測試 nginx配置SSL
目錄2.4 備案 2.5 網域名稱解析 3.nginx配置ssl 4.postman介面測試 5.小結 雲伺服器配置 這裡需要注意的是,可以選擇活動期去購買,不然 還挺貴的。https還需要ssl證書,在如下路由可以申請到免費的ssl證書。2.3.1 點選申請免費的ssl證書 2.3.2 選擇ssl...