红穆笔记
首頁 語言筆記 python批量剪切圖片左右兩側
語言筆記 踩坑總結 python

python批量剪切圖片左右兩側

python批量剪切图片左右两侧

python自動檢測圖片兩側距離的代碼:

import cv2
import numpy as np

image_path = r"C:\Users\18102\Downloads\ok\0001.png"   # 請改爲實際的一張截圖路徑

img = cv2.imread(image_path)
if img is None:
    print("無法讀取圖片,請檢查路徑")
    exit()

clone = img.copy()
points = []  # 存儲兩個點擊點

def click_event(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        points.append((x, y))
        cv2.circle(clone, (x, y), 5, (0, 0, 255), -1)
        cv2.putText(clone, f"({x},{y})", (x+10, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0,0,255), 2)
        cv2.imshow("Image", clone)
        print(f"已記錄點: ({x}, {y})")
        if len(points) == 2:
            # 計算左右裁剪量
            x1, y1 = points[0]
            x2, y2 = points[1]
            left_crop = min(x1, x2)          # 左邊裁剪寬度
            right_crop = img.shape[1] - max(x1, x2)   # 右邊裁剪寬度
            print("\n========== 裁剪參數 ==========")
            print(f"左側應裁剪寬度: {left_crop}px")
            print(f"右側應裁剪寬度: {right_crop}px")
            print("================================")
            cv2.destroyAllWindows()

cv2.namedWindow("Image", cv2.WINDOW_NORMAL)
cv2.imshow("Image", clone)
cv2.setMouseCallback("Image", click_event)
print("請依次點擊:\n1. 左側可見內容的左邊緣(要保留的起始點)\n2. 右側滾動條內側邊緣(要保留的結束點)")
cv2.waitKey(0)
cv2.destroyAllWindows()

python批量剪切左右兩側的代碼:

import os
import cv2

# ---------- 配置 ----------
input_dir = r"C:\Users\18102\Downloads\ok"
output_dir = r"C:\Users\18102\Downloads\ok_cropped"
LEFT_CROP = 159
RIGHT_CROP = 140

# ---------- 創建輸出目錄 ----------
os.makedirs(output_dir, exist_ok=True)

# 獲取所有 PNG 文件列表
png_files = [f for f in os.listdir(input_dir) if f.lower().endswith('.png')]
total = len(png_files)

if total == 0:
    print("❌ 沒有找到任何 PNG 圖片,請檢查目錄。")
    exit()

print(f"📁 找到 {total} 張 PNG 圖片。")

# ---------- 先處理前 3 張 ----------
sample_count = min(3, total)
print(f"\n🔄 正在處理前 {sample_count} 張作爲預覽...")

for i in range(sample_count):
    filename = png_files[i]
    src_path = os.path.join(input_dir, filename)
    img = cv2.imread(src_path, cv2.IMREAD_UNCHANGED)
    if img is None:
        print(f"⚠️ 跳過無法讀取的文件: {filename}")
        continue

    h, w = img.shape[:2]
    left = LEFT_CROP
    right = w - RIGHT_CROP

    if left >= right:
        print(f"⚠️ 警告:{filename} 裁剪後寬度爲0,跳過")
        continue

    cropped = img[:, left:right]
    dst_path = os.path.join(output_dir, filename)
    cv2.imwrite(dst_path, cropped)
    print(f"✅ 已處理: {filename} -> 新尺寸 ({cropped.shape[1]}, {cropped.shape[0]})")

print(f"\n📂 預覽圖片已保存到: {output_dir}")
print("請打開該目錄查看前 3 張圖片的裁剪效果。")

# ---------- 詢問是否繼續 ----------
while True:
    choice = input("\n是否繼續處理剩餘圖片?(y/n,默認 y): ").strip().lower()
    if choice in ('y', 'yes', ''):
        break
    elif choice in ('n', 'no'):
        print("已取消,退出腳本。")
        exit()
    else:
        print("請輸入 y 或 n。")

# ---------- 處理剩餘圖片 ----------
print(f"\n🔄 正在處理剩餘 {total - sample_count} 張圖片...")
for i in range(sample_count, total):
    filename = png_files[i]
    src_path = os.path.join(input_dir, filename)
    img = cv2.imread(src_path, cv2.IMREAD_UNCHANGED)
    if img is None:
        print(f"⚠️ 跳過無法讀取的文件: {filename}")
        continue

    h, w = img.shape[:2]
    left = LEFT_CROP
    right = w - RIGHT_CROP

    if left >= right:
        print(f"⚠️ 警告:{filename} 裁剪後寬度爲0,跳過")
        continue

    cropped = img[:, left:right]
    dst_path = os.path.join(output_dir, filename)
    cv2.imwrite(dst_path, cropped)
    print(f"✅ 已處理: {filename} -> 新尺寸 ({cropped.shape[1]}, {cropped.shape[0]})")

print(f"\n🎉 全部處理完成!共處理 {total} 張圖片。")
print(f"📁 輸出目錄: {output_dir}")

 

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

Import "requests" could not be resolved from source

Import "requests" could not be resolved from source 語言筆記 python

這個報錯是在使用Pylance這個Python語言服務器時出現的。其中,"Import "requests" could not be resolved from source"這個錯誤提示表示在你的代碼中引用了requests模塊,但是Pylance無法從源中找到該模塊的位置。可能的原因是你沒有安…
👁 1771
重新安装Python和requests库

重新安裝Python和requests庫 語言筆記 python

如果您遇到了 "Import "requests" could not be resolved from source" 的問題,可以嘗試重新安裝 Python 和 requests 庫。首先,您需要卸載當前的 Python 和 requests 庫。在 Windows 系統上,您可以通過在命令提示…
👁 439
WARNING: Skipping requests as it is not installed.

WARNING: Skipping requests as it is not installed. 語言筆記 python

這個錯誤提示說明你的Python環境中缺少requests庫,而你的代碼中又調用了這個庫,因此Python無法正常執行你的代碼。解決這個問題的方法是安裝requests庫。你可以在命令行中使用pip命令來安裝:pip install requests如果你使用的是Python3,可以使用pip3命令…
👁 2100
python报错,这是什么原因?AttributeError: partially initialized module 'openai' has no attribute 'Completion' (most likely due to a circular import)

python報錯,這是什麼原因?AttributeError: partially initialized module 'openai' has no attribute 'Completion' (most likely due to a circular import) 語言筆記 python

這個錯誤提示表明在導入 openai 模塊和特定的 Completion 屬性時出現了問題,很可能是由於循環導入導致的。出現這個錯誤的原因可能是你的代碼中存在兩個或多個模塊之間相互導入,形成了循環依賴。例如,模塊A導入了模塊B,而模塊B又導入了模塊A。循環導入會導致模塊在加載時無法正確地初始化,從而…
👁 656
python如何打包在Windows上运行?

python如何打包在Windows上運行? 語言筆記 python

在Windows上打包和運行Python程序的最常用方式是使用PyInstaller。PyInstaller是一個免費的、跨平臺的Python應用程序打包工具,可以將Python代碼和其依賴的庫打包成一個獨立的可執行文件,使得在沒有安裝Python解釋器的系統上運行Python程序成爲可能。以下是使…
👁 300
python开发用什么编程软件好?

python開發用什麼編程軟件好? 語言筆記 python

Python開發的編程軟件有很多,以下是一些常用的Python集成開發環境(IDE)和編輯器:PyCharmPyCharm是一個由JetBrains開發的集成開發環境,它專爲Python開發者設計。PyCharm功能強大,提供了代碼補全、調試、版本控制、代碼重構等一系列高級功能,可以幫助開發者提高工…
👁 175

推薦閱讀

响应式游乐场儿童玩具网站模板 0963

響應式遊樂場兒童玩具網站模板 0963 實用收藏 易優模板

此套eyoucms響應式模板適用於遊樂場與兒童玩具行業,設計風格活潑童趣,能夠展示遊樂設施、玩具產品、品牌故事及安全標準。有助於兒童娛樂品牌在線上吸引家庭消費者。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(Ey…
👁 58
(自适应手机端)物流运输快递仓储网站模板 - 带三级栏目 0980

(自適應手機端)物流運輸快遞倉儲網站模板 - 帶三級欄目 0980 實用收藏 pbootcms模板

一款物流運輸快遞倉儲PbootCMS網站模板,支持PC與WAP端,帶三級欄目。設計風格高效現代,適合快遞、倉儲公司展示服務網絡與配送實力。有助於物流企業在線上展示品牌,吸引電商與企業客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5…
👁 74
儿童教育培训机构网站模板 0375

兒童教育培訓機構網站模板 0375 實用收藏 易優模板

此套eyoucms模板適用於兒童教育培訓機構,設計風格活潑教育,能夠展示兒童培訓課程、教學環境、師資力量及學員成果。有助於兒童教育機構在線上吸引家長,提升品牌形象。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(E…
👁 54
(自适应移动端)五金机械网站pbootcms模板 蓝色营销型五金配件网站源码下载 0427

(自適應移動端)五金機械網站pbootcms模板 藍色營銷型五金配件網站源碼下載 0427 實用收藏 pbootcms模板

本套自適應移動端的五金機械與藍色營銷型五金配件PbootCMS網站模板。設計風格專業營銷,適合五金配件企業展示產品、技術參數及品牌。有助於五金製造企業在線上展示實力,吸引工業客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn相…
👁 43
响应式皮具定制手袋皮包网站模板 0964

響應式皮具定製手袋皮包網站模板 0964 實用收藏 易優模板

一款針對皮具定製、手袋與皮包行業的eyoucms響應式網站模板。設計風格高端時尚,能夠展示皮具產品、定製服務、品牌故事及設計理念。有助於皮具品牌在線上吸引品質生活消費者。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CM…
👁 39