日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三、Numpy数组操作

發(fā)布時間:2023/12/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三、Numpy数组操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、對圖片各個像素點的像素值進行操作

image.shape[0]:image圖像的height
image.shape[1]:image圖像的width
image.shape[2]:image圖像的channels

import cv2 import numpy as npdef 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 - pvcv2.imshow("pixels ",image)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE) cv2.imshow("input image",src)t1 = cv2.getTickCount() access_pixels(src)#為了得到該代碼的運行時間,通常再這行代碼上下放入一個Tick進行計時 t2 = cv2.getTickCount()time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間 print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

運行結(jié)果為:

運行的時間為619ms時間有點長,這里也就是實現(xiàn)圖像像素值的反轉(zhuǎn)操作而已,這里可以調(diào)用bitwise_notAPI(這個函數(shù)是C++寫的),來縮短運行時間
cv2.bitwise_not(image):255 - image所對應(yīng)的像素值

import cv2 import numpy as npdef inverse(image):dst = cv2.bitwise_not(image)cv2.imshow("inverse_image",dst)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE) cv2.imshow("input image",src) t1 = cv2.getTickCount() inverse(src) t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間 print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

運行效果如下:

二、創(chuàng)建圖像

創(chuàng)建一個400×400的三顏色通道的圖像,圖像的B通道賦值為1,其他顏色通道賦值為0,即顯示藍色
np.zeros([400,400,3],np.uint8):創(chuàng)建一個400*400的3顏色通道的圖像,全部賦值為0,且每個像素值單位為uint8

import cv2 import numpy as npdef create_image():img = np.zeros([400,400,3],np.uint8)img[:,:,0] = np.ones([400,400])*255cv2.imshow("new image",img)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE) cv2.imshow("input image",src) t1 = cv2.getTickCount() create_image() t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間 print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:

三、對單通道圖像進行操作

方法一:先對400×400大小的單通道圖像全部初始化為0,然后再對400×400區(qū)域的像素1乘以127,最終轉(zhuǎn)換為127像素的灰色圖像。

np.zeros([400,400,3],np.uint8):創(chuàng)建一個400400的3顏色通道的圖像,全部賦值為0,且每個像素值單位為uint8
np.ones([400,400])*127:對400400的圖像的元素再次基礎(chǔ)上分別乘以127

import cv2 import numpy as npdef create_image():img = np.zeros([400,400,1],np.uint8)img[:,:,0] = np.ones([400,400])*127cv2.imshow("new image",img)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE) cv2.imshow("input image",src) t1 = cv2.getTickCount() create_image() t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間 print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

運行效果如下:

方法二:直接對400×400像素大小的單通道圖像全部初始化為1,再對圖像乘以255,得到白色圖像。

img = np.ones([400,400,1],np.uint8):創(chuàng)建一個400*400的單通道的圖像,全部賦值為1,且每個像素值單位為uint8
img = img * 255:img圖像所有的像素值均對應(yīng)乘以255

import cv2 import numpy as npdef create_image():img = np.ones([400,400,1],np.uint8)img = img * 255cv2.imshow("new image",img)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE) cv2.imshow("input image",src) t1 = cv2.getTickCount() create_image() t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間 print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:

四、對矩陣操作

np.ones([3,3],np.uint8):創(chuàng)建一個3 * 3的矩陣,全部賦值為1,且每個像素值單位為uint8
m1.fill(52):m1圖像的所有像素點的像素值全部填充為52
m1.reshape([1,9]):將m1原本3 * 3的矩陣轉(zhuǎn)換為1* 9的矩陣

import cv2 import numpy as npdef create_image():m1 = np.ones([3,3],np.uint8)m1.fill(52)print(m1)m2 = m1.reshape([1,9])print(m2)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE) cv2.imshow("input image",src) t1 = cv2.getTickCount() create_image() t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間 print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:

總結(jié)

以上是生活随笔為你收集整理的三、Numpy数组操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。