如何使用opencv操作記憶體資料

2021-09-19 05:56:13 字數 1051 閱讀 1685

import numpy as np

import array

from pil import image

self.cap = cv2.videocapture("rtsp:")

while(self.timetoquit.is_set() == false and self.cap.isopened()):

flag, im_rd = self.cap.read()

image = image.frombuffer("rgb", (112, 112), crgbbuf) #crgbbuf是記憶體中的rgb888資料,h.264和yuv,rgb565等的可以使用ffmpeg的c**去轉

imageinput = np.asarray(image.transpose(image.flip_top_bottom)) #得到的影象時倒著的,需要上下翻轉一下

#下面是敏感區域的疊加

image = cv2.cvtcolor(im_rd, cv2.color_bgr2rgb)

roi = image[picsize[1]-132:picsize[1]-20, 0:112]

add_img = cv2.addweighted(imageinput, 0.8, roi, 0.2, 0)

image[picsize[1]-132:picsize[1]-20, 0:112] = add_img

得到的img就是處理完,疊加過的一幀

然而,事情並沒有想象中的順利,發現opencv不支援中文輸入,

cv2.puttext沒法輸入中文,我要是再用pil去來迴轉一遍,或者freetype去做字型新增,會非常麻煩,而且沒效率,僅僅是上面的操作就已經使我的cpu使用率上公升300%,我可能會捨棄掉這種操作,直接使用pil試試
pil確實是號稱第三方的官方庫,用來做影象處理非常強大,解決了我上面的所有問題

image.frombuffer可以替換為 image.frombytes這樣可以省略翻轉的過程

opencv 隨機數使用

包含標頭檔案 include 返回隨機int的函式原型 returns a random integer sampled uniformly from 0,n unsigned operator unsigned n 例子 rng rng therng unsigned int rand num r...

如何正確使用記憶體

如何正確使用記憶體 對於初學者來說,記憶體是個神秘的空間。程式的絕大部分錯誤,也是在於記憶體的使用不當造成的,而且這些錯誤有些都是隱藏很深的。所以,如何掌握記憶體的使用,通曉系統對記憶體的管理手段,將是軟體成功的乙個非常關鍵的因素。首先我們要了解記憶體的分配方式。一般來說,記憶體的分配方式有三種 1...

C語言如何操作記憶體

比如在c語言正 int a a 5 a 4 a 9 結合記憶體來解釋c語言語句的本質 int a 5 編譯器幫我們申請了乙個int型別的記憶體格仔 長度是4位元組,位址是確定的,但是只有編譯器知道,我們是不知道的,也不需要知道 並且把符號a和這個格仔繫結。a 5 編譯器發現我們要給a賦值,就會把這個...