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

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

AI入門:如何使用opencv讀取圖片和視頻?

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

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

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

黑色正方形圖像
  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:圖像的通道和色彩信息(默認值為1),即彩色圖片。8位深度圖片存儲像素點的取值范圍為0~255,1通道為灰度圖,3通道為彩色圖。

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

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

修改像素顏色示例

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

### 核心點:獲取圖像字節(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類來支持各種視頻文件格式。在到達視頻文件末尾之前,VideoCapture類通過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ù)為等待鍵盤觸發(fā)的時間,單位為毫秒,其返回值是1(表示沒有鍵被按下)或ASCII碼,如27表示按下Esc鍵。另外,Python提供了一個標準函數(shù)ord(),該函數(shù)可以將字符轉(zhuǎn)換為ASCII碼。例如,輸入ord('a)會返回97。

以上就是圖片、視頻讀寫的基本方法,是不是非常簡單呢?

備注:免費獲取源碼,請評論區(qū)回復(fù)源碼。

熱門課程推薦

熱門資訊

請綁定手機號

x

同學(xué)您好!

您已成功報名0元試學(xué)活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定