從零開始學習:深度學習(基礎入門版)(1天)

(一)?opencv和opencv-contrib的安裝

(1.1)在桌面地底部的搜索欄,搜索命令提示符,點擊并打開命令提示符

(1.2)依次輸入命令并按回車pip install opencv-python==3.4.18.65 -i https://pypi.tuna.tsinghua.edu.cn/simple和pip install opencv-contrib-python==3.4.18.65 -i https://pypi.tuna.tsinghua.edu.cn/simple

(二)在pycharm軟件中,用python語言,opencv庫實現以下功能



此代碼主要完成以下任務:

  1. 讀取并顯示一張本地圖片
  2. 交互式控制窗口行為
  3. 輸出圖像的基礎元信息

完整執行流程:

添加了逐行詳細注釋的完整代碼及預期輸出示例:

# ✅ 1. 導入必要的庫
import cv2          # OpenCV庫用于圖像處理與計算機視覺任務
import numpy as np # NumPy庫用于高效處理多維數組(圖像本質是數組)# 📁 2. 讀取本地圖像文件
a = cv2.imread('1.jpg')  # 從當前工作目錄讀取名為'1.jpg'的圖像文件
#   ▶? 成功時返回一個NumPy數組(形狀=[高度, 寬度, 通道數]),失敗返回None# 🖥? 3. 顯示圖像窗口
cv2.imshow('tu', a)      # 創建名為'tu'的窗口并顯示圖像a
#   ⚠? 注意:此語句不會自動暫停,需配合waitKey()才能看到效果# ⏸? 4. 等待用戶按鍵輸入
b = cv2.waitKey(0)       # 阻塞程序執行,直到用戶按下任意鍵
#   🔑 參數0表示無限期等待,返回值為按下的鍵對應的ASCII碼(本例未使用該值)# ✖? 5. 關閉所有OpenCV窗口
cv2.destroyAllWindows() # 釋放所有創建的GUI窗口資源# 📝 6-8. 輸出圖像元信息
print("圖像形狀(shape):", a.shape)    # 輸出數組維度:[高, 寬, 通道數]
print("圖像數據類型(dtype):", a.dtype) # 輸出像素的數據類型(通常為uint8)
print("圖像大小(size):", a.size)     # 輸出總像素數(高×寬×通道數)
圖像形狀(shape): (480, 640, 3)
圖像數據類型(dtype): uint8
圖像大小(size): 921600


此代碼主要完成以下任務:

  1. 灰度化處理與保存
  2. 圖像區域裁剪與可視化對比
  3. 圖像元信息輸出
  4. 多窗口交互式顯示

完整執行流程:

添加了逐行詳細注釋的完整代碼及預期輸出示例:

# -*- coding: utf-8 -*-
import cv2  # 導入OpenCV庫,用于圖像處理與計算機視覺任務# ==================== 第一階段:灰度化處理 & 基礎信息輸出 ====================
# 📷 1. 以灰度模式讀取圖像
b = cv2.imread(filename=r'./1.jpg', flags=cv2.IMREAD_GRAYSCALE)  # ✅ 關鍵參數:flags=cv2.IMREAD_GRAYSCALE
#   ? 功能:將輸入圖像轉換為單通道灰度圖(而非默認的BGR三通道)
#   ? 返回值:NumPy數組,形狀為 [高度, 寬度](二維數組)# 🖥? 2. 顯示灰度圖像窗口
cv2.imshow(winname='zz', mat=b)  # 創建名為 'zz' 的窗口并顯示灰度圖 b
#   ? 注意:此語句不會自動暫停,需配合 waitKey() 才能看到效果# ⏸? 3. 等待用戶按鍵(防止窗口一閃而過)
a = cv2.waitKey(0)  # 阻塞程序執行,直到用戶按下任意鍵
#   ? 參數 0 表示無限期等待,返回值為按下的鍵對應的 ASCII 碼(本例未使用該值)# ✖? 4. 關閉所有OpenCV窗口
cv2.destroyAllWindows()  # 釋放所有創建的GUI窗口資源# 📝 5-7. 輸出灰度圖的元信息
print("圖像形狀(shape):", b.shape)    # 輸出數組維度:[高度, 寬度](灰度圖為二維)
print("圖像數據類型(dtype):", b.dtype) # 輸出像素的數據類型(通常為 uint8)
print("圖像大小(size):", b.size)      # 輸出總像素數(高度 × 寬度)# 💾 8. 保存灰度圖到文件
cv2.imwrite(filename='timg98_GRAY.jpg', img=b)  # 將灰度圖 b 保存為新文件
#   ? 注意:若文件已存在會被覆蓋# ==================== 第二階段:圖像裁剪 & 雙窗口對比 ====================
# 📁 9. 重新讀取原始彩色圖像(未指定 flags 參數,默認按 BGR 三通道讀取)
a = cv2.imread(r'./1.jpg')  # 返回 BGR 三通道圖像(形狀為 [高度, 寬度, 3])# ✂? 10. 裁剪圖像區域(基于NumPy數組切片)
b = a[30:230, 100:300]  # 選取矩形區域:縱向 30~230px,橫向 100~300px
#   ? Python切片規則:起始位置包含,終止位置不包含 → 實際裁剪尺寸:高=200px (230-30),寬=200px (300-100)# 🖥? 11-12. 同時顯示原圖與裁剪結果
cv2.imshow(winname='yuantu', mat=a)   # 窗口標題 "yuantu"(原圖)
cv2.imshow(winname='qiepian', mat=b)  # 窗口標題 "qiepian"(裁剪片段)# ⏸? 13. 等待用戶按鍵(保持雙窗口可見)
cv2.waitKey(0)  # 阻塞程序執行,直到用戶按下任意鍵# ✖? 14. 關閉所有OpenCV窗口
cv2.destroyAllWindows()  # 釋放所有創建的GUI窗口資源
圖像形狀(shape): (480, 640)       # 灰度圖形狀(高 x 寬)
圖像數據類型(dtype): uint8        # 像素類型(0~255 的無符號整數)
圖像大小(size): 307200           # 總像素數 = 480 × 640


此代碼主要完成以下任務:

實時獲取攝像頭視頻流 → 轉灰度 → 顯示畫面

完整執行流程:

?

  1. 打開攝像頭:通過 cv2.VideoCapture(0) 打開默認攝像頭(編號0通常是筆記本內置攝像頭)

  2. 檢查攝像頭是否成功打開:如果失敗,打印“無法打開視頻文件”并退出程序

  3. 實時讀取視頻幀:在一個無限循環中,逐幀讀取攝像頭畫面

  4. 將彩色畫面轉為灰度:使用 cv2.cvtColor 把每一幀從彩色(BGR)轉換成灰度圖像

  5. 實時顯示灰度畫面:通過 cv2.imshow 在一個名為“Video”的窗口中顯示灰度畫面

  6. 按 ESC 鍵退出:如果用戶按下鍵盤上的 ESC 鍵(ASCII碼27),則跳出循環

  7. 釋放資源:關閉攝像頭并銷毀所有 OpenCV 窗口,避免資源泄露

總結:這段代碼會打開你的攝像頭,把實時畫面變成黑白色,并持續顯示,直到你按下 ESC 鍵退出

添加了逐行詳細注釋的完整代碼及預期輸出示例:

import cv2                       # 導入 OpenCV 庫
video_capture = cv2.VideoCapture(0)  # 打開默認攝像頭(設備索引 0)
if not video_capture.isOpened():     # 檢查攝像頭是否成功打開print("無法打開視頻文件")        # 若打開失敗,打印提示信息exit()                          # 退出程序
while True:                         # 無限循環,持續讀取攝像頭畫面ret, frame = video_capture.read()  # 讀取一幀:ret 表示是否成功,frame 為圖像數據if not ret:                     # 如果讀取失敗(無畫面)break                       # 跳出循環frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 將彩色幀轉換為灰度圖像cv2.imshow('Video', frame)      # 在名為 'Video' 的窗口中顯示當前幀if cv2.waitKey(1) == 27:        # 等待 1 毫秒;若用戶按下 ESC(ASCII 27),則跳出循環break
video_capture.release()             # 釋放攝像頭資源
cv2.destroyAllWindows()             # 關閉所有由 OpenCV 創建的窗口

額外擴充:

  1. cv2.VideoCapture('aiweier.mp4')?→ 初始化視頻捕獲對象
  2. isOpened()?→ 校驗文件可讀性
  3. while True?+?read()?→ 逐幀讀取視頻流
  4. cvtColor(..., COLOR_BGR2GRAY)?→ 實時轉灰度圖
  5. imshow()?+?waitKey(1)?→ 動態顯示畫面 & 響應鍵盤事件
  6. release()?/?destroyAllWindows()?→ 資源清理
    import cv2  # 導入 OpenCV 庫,用于視頻和圖像處理# 創建 VideoCapture 對象,打開名為 'aiweier.mp4' 的視頻文件
    video_capture = cv2.VideoCapture('aiweier.mp4')# 檢查視頻文件是否成功打開
    if not video_capture.isOpened():print("無法打開視頻文件")  # 如果無法打開,輸出錯誤提示exit()  # 退出程序# 無限循環,用于逐幀讀取和顯示視頻
    while True:# 從視頻中讀取下一幀ret, frame = video_capture.read()# 如果讀取失敗(如到達視頻末尾),則跳出循環if not ret:break# 將當前幀從 BGR 彩色圖像轉換為灰度圖像frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 在名為 'Video' 的窗口中顯示當前幀cv2.imshow('Video', frame)# 等待鍵盤輸入,等待時間為 1 毫秒# 如果按下 ESC 鍵(ASCII 碼為 27),則跳出循環if cv2.waitKey(1) == 27:break# 釋放 VideoCapture 對象,關閉視頻文件
    video_capture.release()# 銷毀所有 OpenCV 創建的窗口
    cv2.destroyAllWindows()

代碼中去除以下代碼,代碼運行結果為彩色圖片

 # 將當前幀從 BGR 彩色圖像轉換為灰度圖像frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)



此代碼主要完成以下任務:

從彩色圖像中分離并可視化其藍(B)、綠(G)、紅(R)三個獨立顏色通道

?

  1. 顏色空間特性

    • OpenCV 默認使用?BGR?而非 RGB 順序存儲顏色圖像,因此:
      • img[:, :, 0]?→?藍色通道
      • img[:, :, 1]?→?綠色通道
      • img[:, :, 2]?→?紅色通道
  2. 單通道顯示原理

    • 每個顏色通道本質上是一個二維矩陣(高度×寬度),值范圍通常為?0-255
    • 當用?imshow()?顯示單通道時,OpenCV 自動將其解釋為?8位灰度圖像,其中:
      • 0?= 純黑 → 該顏色成分完全缺失
      • 255?= 純白 → 該顏色成分達到最大強度
  3. 兩種通道分離方式對比

    • 切片法?(img[:, :, n]):直觀高效,適合少量通道提取
    • cv2.split():返回包含所有通道的列表,適用于批量處理多通道場景

完整執行流程:

添加了逐行詳細注釋的完整代碼及預期輸出示例:

import cv2
# 1. 讀取圖像(默認 BGR 順序)
img = cv2.imread('1.jpg')
if img is None:raise FileNotFoundError('圖像加載失敗,請檢查路徑')
# 2. 方法一:直接切片提取單個通道
b_ch = img[:, :, 0]   # 藍色通道
g_ch = img[:, :, 1]   # 綠色通道
r_ch = img[:, :, 2]   # 紅色通道
# 3. 方法二:用 cv2.split 一次拆出三個通道
# b_ch, g_ch, r_ch = cv2.split(img)
# 4. 分別顯示三個通道(單通道圖像默認以灰度形式呈現)
cv2.imshow('Blue channel', b_ch)
cv2.imshow('Green channel', g_ch)
cv2.imshow('Red channel', r_ch)
# 5. 等待按鍵(0 表示無限等待,或給足夠大的毫秒數)
cv2.waitKey(0)
# 6. 關閉所有窗口
cv2.destroyAllWindows()



此代碼主要完成以下任務:

從輸入圖像中提取并突出顯示藍色通道的信息

完整執行流程:

添加了逐行詳細注釋的完整代碼及預期輸出示例:

# -*- coding: utf-8 -*-
"""
功能:讀取一張彩色圖,只保留藍色通道,其余通道置 0,并顯示結果
"""# 1. 導入庫
import cv2
import numpy as np      # 預留,方便后續擴展# 2. 讀取原始圖像(默認 BGR 順序)
img = cv2.imread('1.jpg')          # 在當前工作目錄下查找 1.jpg
if img is None:                    # 讀取失敗時 img 為 Noneraise FileNotFoundError('圖像加載失敗,請檢查 1.jpg 是否存在及路徑是否正確')# 3. 復制一份,避免修改原圖
img_blue = img.copy()              # 得到與原圖同尺寸、同內容的備份# 4. 只保留藍色通道:將綠色、紅色通道全部置 0
#   OpenCV 中 BGR 順序:0-藍色(B),1-綠色(G),2-紅色(R)
img_blue[:, :, 1] = 0            # 綠色通道全部設為 0
img_blue[:, :, 2] = 0            # 紅色通道全部設為 0
# 此時 img_blue 中僅 B 通道有值,其余兩通道為 0,整體呈藍色調# 5. 顯示結果
cv2.imshow('Blue-only color image', img_blue)  # 創建一個窗口并顯示處理后的圖像
cv2.waitKey(0)                                 # 無限等待,直到鍵盤任意按鍵
cv2.destroyAllWindows()                        # 銷毀所有已創建的窗口



此代碼主要完成以下任務:

演示如何使用 OpenCV 分離圖像的 BGR 三通道并重新合并回原始彩色圖像

完整執行流程:

步驟代碼行作用(一句話說明)
1import cv2引入 OpenCV 庫,準備圖像處理
2img = cv2.imread('1.jpg')把當前目錄里的?1.jpg?讀進內存,得到 BGR 彩色矩陣
3if img is None:若文件不存在或讀取失敗,立即報錯并終止程序
4b, g, r = cv2.split(img)把彩色圖拆成 3 張灰度圖:藍通道、綠通道、紅通道
5merged = cv2.merge((b, g, r))把這三張灰度圖按 B-G-R 順序重新合并成一張與原圖相同的彩色圖
6cv2.imshow('Merged BGR', merged)打開窗口,標題為?Merged BGR,顯示合并后的彩色圖
7cv2.waitKey(0)暫停程序,等待用戶按任意鍵
8cv2.destroyAllWindows()關閉所有 OpenCV 窗口,釋放資源,程序結束

添加了逐行詳細注釋的完整代碼及預期輸出示例:

import cv2                       # 導入 OpenCV 庫,用于圖像讀寫與顯示# 1. 讀取圖像(默認 BGR 順序)
img = cv2.imread('1.jpg')        # 從當前工作目錄加載 '1.jpg',返回三維 BGR 數組
if img is None:                  # 檢查是否加載成功raise FileNotFoundError('圖片路徑錯誤或文件不存在')  # 若失敗,立即拋出異常并終止程序# 2. 分離 BGR 三通道
b, g, r = cv2.split(img)         # 把 BGR 圖像拆成 3 個單通道數組:b(藍)、g(綠)、r(紅)# 等價于 b = img[:, :, 0]; g = img[:, :, 1]; r = img[:, :, 2]# 3. 重新合并三通道,得到與原圖一致的彩色圖
merged = cv2.merge((b, g, r))    # 把 b、g、r 三個二維數組按順序疊成一幅新的三通道彩色圖# 也可寫成 cv2.merge([b, g, r])# 4. 顯示結果
cv2.imshow('Merged BGR', merged) # 創建名為 'Merged BGR' 的窗口并展示合并后的彩色圖
cv2.waitKey(0)                   # 無限等待鍵盤事件;按任意鍵后繼續
cv2.destroyAllWindows()          # 銷毀所有已打開的 OpenCV 窗口,釋放資源



此代碼主要完成以下任務:

對一張圖片的局部區域進行隨機著色并顯示結果

完整執行流程:

步驟代碼行作用說明
1import cv2導入 OpenCV 庫,用于圖像讀寫與顯示
2import numpy as np導入 NumPy 庫,方便生成隨機數組并進行矩陣操作
3a = cv2.imread('1.jpg')讀取磁盤文件?1.jpg,將其加載為 NumPy 數組并存入變量?a
4a[100:200, 200:300] = np.random.randint(0, 256, (100, 100, 3))在?a?的指定區域(行 100–199、列 200–299)上覆蓋隨機彩色像素,實現打碼/馬賽克效果
5cv2.imshow('masaike', a)新建名為?masaike?的窗口,并在其中顯示處理后的圖像?a
6cv2.waitKey(1000000)等待鍵盤事件,最長約 1000 秒;期間窗口保持顯示
7cv2.destroyAllWindows()關閉所有由 OpenCV 創建的窗口,釋放資源

添加了逐行詳細注釋的完整代碼及預期輸出示例:

import cv2           # 導入 OpenCV 庫,用于圖像的讀取、顯示與保存
import numpy as np   # 導入 NumPy 庫,用于高效的數組操作與隨機數生成# 1. 從當前目錄讀取圖像文件 1.jpg,返回一個三維的 BGR 圖像數組
a = cv2.imread('1.jpg')# 2. 在圖像 a 的指定區域(行 100~199,列 200~299)上覆蓋隨機彩色像素塊
#    np.random.randint(0, 256, (100, 100, 3)) 生成形狀為 (100, 100, 3) 的隨機整數矩陣,
#    每個元素取值范圍 [0, 255],對應 BGR 三通道,實現“馬賽克”或“打碼”效果
a[100:200, 200:300] = np.random.randint(0, 256, (100, 100, 3))# 3. 創建一個名為 'masaike' 的窗口,并在其中顯示處理后的圖像 a
cv2.imshow('masaike', a)# 4. 等待鍵盤事件,最長等待 1 000 000 毫秒(≈ 1000 秒)
#    期間窗口保持顯示,按任意鍵可提前結束等待
cv2.waitKey(1000000)# 5. 銷毀所有由 OpenCV 創建的窗口,釋放資源
cv2.destroyAllWindows()



此代碼主要完成以下任務:

將一張圖片(1.jpg)的特定區域復制到另一張圖片(mimi.jpg)的指定位置,并同步顯示兩張圖片的效果
完整執行流程:

步驟代碼作用說明
1import cv2載入 OpenCV 庫,提供圖像讀寫與顯示功能
2a = cv2.imread('1.jpg')讀取圖像文件?1.jpg?并存儲到變量?a
3b = cv2.imread('mimi.jpg')讀取圖像文件?mimi.jpg?并存儲到變量?b
4b[200:350, 200:350] = a[50:200, 100:250]將?a?中第 50–199 行、100–249 列的像素區域復制到?b?的第 200–349 行、200–349 列,實現區域替換;要求兩塊區域尺寸一致(150×150)
5cv2.imshow('b', b)創建名為?b?的窗口并顯示處理后的圖像?b
6cv2.imshow('a', a)創建名為?a?的窗口并顯示原始圖像?a,方便對比查看
7cv2.waitKey(100000)等待鍵盤事件,最長約 100 秒;按任意鍵可提前結束
8cv2.destroyAllWindows()關閉所有 OpenCV 創建的窗口,釋放資源


添加了逐行詳細注釋的完整代碼及預期輸出示例:

import cv2                            # 1. 導入 OpenCV 庫,用于圖像讀寫與顯示# 2. 讀取兩張圖片
a = cv2.imread('1.jpg')               # 讀取 1.jpg,存入變量 a(原始圖像)
b = cv2.imread('mimi.jpg')            # 讀取 mimi.jpg,存入變量 b(目標圖像)# 3. 區域復制:將 a 中第 50~199 行、100~249 列的 150×150 像素區域
#    覆蓋到 b 中第 200~349 行、200~349 列的位置
#    注意:源區域與目標區域尺寸必須一致(都是 150×150)
b[200:350, 200:350] = a[50:200, 100:250]# 4. 顯示處理后的結果
cv2.imshow('b', b)                    # 創建名為 "b" 的窗口,顯示替換后的圖像 b
cv2.imshow('a', a)                    # 創建名為 "a" 的窗口,顯示原始圖像 a,便于對比cv2.waitKey(100000)                   # 5. 等待鍵盤事件,最長約 100 秒;按任意鍵可提前退出
cv2.destroyAllWindows()               # 6. 關閉所有 OpenCV 創建的窗口,釋放資源


?


此代碼主要完成以下任務:

主要演示了 OpenCV 中兩種不同的圖像縮放方法,并通過窗口對比展示原始圖像與縮放后的效果

完整執行流程:

1.讀取原始圖像?→ 2.?嘗試兩種縮放方式?→ 3.?打印原始圖像尺寸?→ 4.?雙窗口對比顯示?→ 5.?持久化展示結果

步驟代碼作用說明
1import cv2導入 OpenCV 庫,提供圖像讀寫與顯示功能
2a = cv2.imread('1.jpg')讀取文件 1.jpg,將其加載為 NumPy 數組并存入變量?a
3b = cv2.imread('mimi.jpg')讀取文件 mimi.jpg,將其加載為 NumPy 數組并存入變量?b
4b[200:350, 200:350] = a[50:200, 100:250]將?a?中第 50–199 行、100–249 列的 150×150 像素區域復制到?b?的第 200–349 行、200–349 列,實現區域替換(要求兩區域尺寸一致)
5cv2.imshow('b', b)創建名為 “b” 的窗口,顯示經過替換處理后的圖像?b
6cv2.imshow('a', a)創建名為 “a” 的窗口,顯示原始圖像?a,方便與結果對比
7cv2.waitKey(100000)等待鍵盤事件,最長約 100 秒;按任意鍵可提前結束等待
8cv2.destroyAllWindows()關閉所有由 OpenCV 創建的窗口,釋放資源


添加了逐行詳細注釋的完整代碼及預期輸出示例:

import cv2                # 1. 導入 OpenCV 庫,用于圖像處理與顯示# 2. 讀取圖像文件 mimi.jpg,返回三維 BGR 數組
a = cv2.imread('mimi.jpg')# 3. 第一次縮放:強制把圖像調整為指定尺寸
#    dsize=(200, 600) 表示輸出圖像寬度 200 像素,高度 600 像素
#    注意:此行計算出的 a_new 會被下一行覆蓋,實際不會生效
a_new = cv2.resize(a, dsize=(200, 600))  # 寬、高# 4. 第二次縮放:按相對比例縮放
#    dsize=None 表示不使用絕對尺寸,而是根據 fx、fy 進行縮放
#    fx=1.5 → 寬度放大為原來的 1.5 倍
#    fy=0.5 → 高度縮小為原來的 0.5 倍
a_new = cv2.resize(a, dsize=None, fx=1.5, fy=0.5)# 5. 打印原圖 a 的形狀(行數=高,列數=寬,第 3 維=通道數 BGR)
print(a.shape)  # 高、寬、通道數# 6. 分別顯示原圖和縮放后的圖像
cv2.imshow('a', a)        # 顯示原圖
cv2.imshow('a_new', a_new)  # 顯示縮放后的圖像# 7. 等待鍵盤事件,最長約 100 秒;按任意鍵可提前退出
cv2.waitKey(100000)# 8. 關閉所有 OpenCV 創建的窗口,釋放資源
cv2.destroyAllWindows()

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92464.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92464.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92464.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SimpleMindMap:一個強大的Web思維導圖

在信息爆炸的時代,如何高效地組織、記憶和表達復雜信息成為一項關鍵技能。思維導圖作為一種強大的可視化工具,能夠幫助我們理清思路、激發創意并提高學習效率。最近在逛github的時候發現了一個開源的思維導圖工具SimpleMindMap,和家人們分享下…

正確使用 JetBrains

來自窮鬼的 marker !關鍵也不是全靠它吃飯,所以……請鄙視我就對了!2023.2.6 和 MybatisX 1.7.3 兼容性好像有些問題,會報錯。想一想降級 MybatisX 不如升級一下 Idea。So, do this.官方下載安裝包并裝之。然后解鎖無需下載文件、…

0_外設學習_ESP8266+云流轉(no 0基礎)

1、環境要求 2個ESP8266模塊、2個USB轉ESP8266,通過ESP8266_A-->(阿里云)云流轉-->ESP8266_B,實現ESP8266_A發布話題,ESP8266_B訂閱該話題。 2、阿里云云流轉配置 1、基礎要求: 添加1個產品&#xf…

AI漫畫翻譯器-上傳圖片自動翻譯,支持多語言

本文轉載自:AI漫畫翻譯器-上傳圖片自動翻譯,支持多語言 - Hello123 ** 一、AI 漫畫翻譯器的核心定位 AI 漫畫翻譯器是專為漫畫愛好者設計的智能翻譯平臺,通過深度學習技術實現漫畫文本的精準識別與本地化轉換。它能在保留原圖排版和藝術風格…

有效介電常數

有效介電常數:如果導體的橫截面被介質完全包裹,位于導體之間的電力線(如帶狀線)就會感受到相同的介電常數。然而,對于微帶線、雙絞線或共面線,導體周圍的介質不是均勻的,所以一些電力線穿過空氣,而另一些則穿過介質。圖…

51c視覺~合集16

自己的原文哦~ https://blog.51cto.com/whaosoft/14117000 #港大成立計算與數據科學學院,計算機統計雙劍合璧 剛剛,港大成立新的計算與數據科學學院,由計算機科學系和統計學系合并。馬毅教授被任命為學院首任院長。 馬毅教授官宣…

慣量時間常數 H 與轉動慣量 J 的關系解析

慣量時間常數 H 與轉動慣量 J 的關系解析 在電力系統穩定分析、旋轉機械動力學等領域,慣量時間常數(H) 和 轉動慣量(J) 是描述旋轉體慣性特性的兩個核心參數。二者雖然出發點不同,但在數學和物理層面具有緊…

DeepSeek-V3/R1 架構深度剖析:國產大模型的創新突圍之路

本文深入解析 DeepSeek-V3/R1 的核心架構設計,揭示其如何在模型效率、推理性能與知識處理等維度實現突破,成為中文大模型領域的標桿之作。 引言:大模型競技場中的"中國速度" #mermaid-svg-9Kk7tHp57CilWIFU {font-family:"trebuchet ms",verdana,arial,…

【從0到1制作一塊STM32開發板】5. 整體布局

在之前的學習中,我偏向的多是嵌入式軟件開發的工作,如果想要自己diy一款具備特定功能的嵌入式工具的話,還需要具備畫板子的能力。但由于我目前還沒學模電,故我打算直接找個b站的學習視頻先跟著畫個板子出來,簡單理解各…

nflsoi 8.8 題解

感覺這把難,不過今天狀態比較差,頭昏昏的。怎么后面幾道藍題別人光速切掉了?不過賽后再來看感覺也不算特別麻煩的題目。 C.#11698 雙循環錦標賽 / TopCoder 10687 The Basketball Div One 題意 約翰與布魯斯對團體體育賽事頗有研究&#xff0…

面向真實場景的定制化圖像降質模型設計方案

面向真實場景的定制化圖像降質模型設計方案 1. 核心思路:從真實圖像中學習退化模型 1.1 問題定義:合成數據與真實數據的域差距 在超分辨率(Super-Resolution, SR)算法的實際應用中,一個核心挑戰源于訓練數據與真實測…

計算機網絡:一個 IP 地址可以同時屬于 A 類、B 類或 C 類嗎?

一個IP地址不可以同時屬于A類、B類或C類。A類、B類、C類IP地址的劃分有明確的規則,通過網絡位的最高幾位即可唯一確定其類別,不存在重疊的可能。 IP地址分類的核心規則(針對IPv4) IPv4地址由32位二進制數組成,通常分為…

利用哥斯拉(Godzilla)進行文件上傳漏洞滲透實戰分析

利用哥斯拉(Godzilla)進行文件上傳漏洞滲透實戰分析本實驗通過DVWA靶機環境演示如何利用哥斯拉工具進行文件上傳漏洞的滲透測試,最終獲取目標服務器控制權限。實驗環境 攻擊工具:哥斯拉(Godzilla) v4.0.1靶機地址:http://192.168.3.101/dvwa目…

MMBFJ310LT1G一款N溝道JFE 晶體管適用于高頻放大器和振蕩器等射頻應用MMBFJ310LT1

MMBFJ310LT1G 是一款 N溝道JFET晶體管 ,適用于高頻放大器和振蕩器等射頻應用。以下是其核心性能參數:基本參數 ??漏源擊穿電壓?:25V ??柵源擊穿電壓?:25V ??漏源電流(Vgs0V)?:24mA至60…

【洛谷題單】--分支結構(二)

🔥個人主頁:草莓熊Lotso 🎬作者簡介:C研發方向學習者 📖個人專欄: 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言:生活是默默的堅持,毅力是永久的…

Django模型開發全解析:字段、元數據與繼承的實戰指南

目錄 一、字段類型:精準匹配業務需求 1. 字符型字段的“長短之爭” 2. 數值型字段的“范圍控制” 3. 時間日期型字段的“自動記錄” 4. 布爾型字段的“三態處理” 5. 文件字段的“存儲策略” 二、元數據:控制數據庫與行為的“幕后玩家” 1. 數據…

使用 Grunt 替換 XML 文件中的屬性值

使用 Grunt 替換 XML 文件中的屬性值 在 Grunt 中替換 XML 文件的屬性值可以通過幾種方式實現,以下是詳細的解決方案: 方法1:使用 grunt-xmlpoke 插件(推薦) 1. 安裝插件 npm install grunt-xmlpoke --save-dev2. 配置…

docker緩存目錄轉移設置和生效過程

docker緩存目錄默認在系統盤/var/lib/docker,存在系統盤打滿,導致系統崩潰問題。 這里嘗試將docker緩存目錄轉移到數據存儲盤/store/docker。 1 查看現有緩存目錄 docker info 一般情況下是 Docker Root Dir: /var/lib 2 停止服務 systemctl stop dock…

滴滴云原生可觀測 HUATUO 開源項目正式入駐 CCF

8月2日,滴滴宣布其開源云原生操作系統可觀測性項目HUATUO正式入駐中國計算機學會(CCF),加入其重點孵化項目序列。本次入駐不僅體現了滴滴長期踐行開源共建共享的理念,也希望通過行業協作,共同推動可觀測領域…

python學智能算法(三十二)|SVM-軟邊界理解

【1】引言 前序學習進程中,已經對SVM的KKT條件,Slater條件等進行了探究,但這些都是完美情況,數據線性可分。 實際生活中需要處理的數據往往因為各式各樣的原因會不可分,所以必須學會容忍一些小錯誤,完美的…