激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

AI入門(mén):如何使用opencv讀取圖片和視頻?

發(fā)布時(shí)間:2024-08-18 15:51:17 瀏覽量:242次

大部分的cv應(yīng)用都需要處理圖像輸入和輸出。比如,一個(gè)互動(dòng)式cv應(yīng)用可能通過(guò)攝像頭作為輸入源,并在窗口中顯示輸出。除了攝像頭輸入外,還可能涉及到圖像文件、視頻文件和原始字節(jié)的讀取。舉例來(lái)說(shuō),網(wǎng)絡(luò)傳輸中的原始字節(jié)可能是應(yīng)用中圖形處理算法生成的。

不管是什么格式,每個(gè)像素都有一個(gè)值,但表示像素的方法各不相同。例如,可以通過(guò)使用二維NumPy數(shù)組簡(jiǎn)單地創(chuàng)建一個(gè)黑色的正方形圖像:

黑色正方形圖像
  1. 圖像讀取

OpenCV的imread函數(shù)支持各種靜態(tài)圖像文件格式。

imread函數(shù)示例
不同flags下讀取結(jié)果
#### 顯示不同flags讀取結(jié)果def cv2flags(filename):    flags = [0, 1, 2, 3, 4]    for flag in flags:        m = cv2.imread(filename, flags=flag)        cv2.namedWindow(f"flags={flag}", 0)        cv2.imshow(f"flags={flag}", m)    cv2.waitKey(0)filename = "./src/imgs/1.jpg"cv2flags(filename)

flags:圖像的通道和色彩信息(默認(rèn)值為1),即彩色圖片。8位深度圖片存儲(chǔ)像素點(diǎn)的取值范圍為0~255,1通道為灰度圖,3通道為彩色圖。

基本上,一個(gè)字節(jié)可以表示0到255的整數(shù)。對(duì)于實(shí)時(shí)圖像應(yīng)用來(lái)說(shuō),一個(gè)像素通常由每個(gè)通道的一個(gè)字節(jié)表示。

一個(gè)OpenCV圖像是array類型的二維或三維數(shù)組。8位的灰度圖像是一個(gè)含有字節(jié)值的二維數(shù)組。因此,我們可以通過(guò)坐標(biāo)位置訪問(wèn)像素,比如修改橫向600-800、縱向100-200為藍(lán)色(BGR=(255,0,0)):

修改像素顏色示例

掌握了這些基礎(chǔ)知識(shí),我們就可以輕松讀取圖片或網(wǎng)絡(luò)圖片,方法十分簡(jiǎn)單:

### 核心點(diǎn):獲取圖像字節(jié)數(shù)據(jù)def show_url_image(url_path):    resp = request.urlopen(url_path)    image = np.asarray(bytearray(resp.read()), dtype="uint8") ### 字節(jié)流數(shù)組    img = cv2.imdecode(image, 1)     cv2.namedWindow("show_url_image", 0)    cv2.imshow("show_url_image", img)    cv2.waitKey(0)
網(wǎng)絡(luò)圖片讀取示例

視頻讀取:

OpenCV提供了VideoCapture類和Video Writer類來(lái)支持各種視頻文件格式。在到達(dá)視頻文件末尾之前,VideoCapture類通過(guò)read()函數(shù)獲取新的幀,每幀是基于BGR格式的圖像。

#### 視頻讀取def show_video(video_path):    cap = cv2.VideoCapture(video_path)    while (cap.isOpened()):        ret, frame = cap.read()        if ret == True:            frame1 = process(frame, opt=0) ###增加視頻處理功能            met = np.hstack((frame, frame1))            cv2.namedWindow("show_video", 0)            cv2.imshow("show_video", met)            if cv2.waitKey(1) & 0xFF == ord('q'):                break        else:            break

waitKey()的參數(shù)為等待鍵盤(pán)觸發(fā)的時(shí)間,單位為毫秒,其返回值是1(表示沒(méi)有鍵被按下)或ASCII碼,如27表示按下Esc鍵。另外,Python提供了一個(gè)標(biāo)準(zhǔn)函數(shù)ord(),該函數(shù)可以將字符轉(zhuǎn)換為ASCII碼。例如,輸入ord('a)會(huì)返回97。

以上就是圖片、視頻讀寫(xiě)的基本方法,是不是非常簡(jiǎn)單呢?

備注:免費(fèi)獲取源碼,請(qǐng)?jiān)u論區(qū)回復(fù)源碼。

熱門(mén)課程推薦

熱門(mén)資訊

請(qǐng)綁定手機(jī)號(hào)

x

同學(xué)您好!

您已成功報(bào)名0元試學(xué)活動(dòng),老師會(huì)在第一時(shí)間與您取得聯(lián)系,請(qǐng)保持電話暢通!
確定