S 基於Python的Opencv入門學習 2

2021-09-14 00:40:48 字數 3274 閱讀 8998

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...