日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python opencv实现目标区域裁剪

發布時間:2024/9/30 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python opencv实现目标区域裁剪 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個任務是自己在項目中數據處理的一部分內容,待處理的圖片如下所示:
我需要將目標區域給裁剪出來,要不然在后期訓練網絡的時候整幅圖像過大,且目標區域過小,得到結果不好,還會加劇計算量。在網上找了各個大佬的博客看,沒找到合適的,便自己動手寫了,順便自己的小破站剛搭建起來,記錄一下自己的思路。

思路

去尋找目標區域的最左邊,最右邊,最上面和最下面的像素點,取到坐標信息以后用CV2的裁剪一下就可以實現了。
#難點
數據總共是11952張圖片,每張圖片是1024*768大小的,依次去遍歷的話擔心太費時間了,結果還好,圖像中黑色的像素點值為0,計算量比想象的要小很多
#代碼

import cv2"""使用OpenCV截取圖片 """ def search(path):left = 1024right = 0upper = 768lower = 0img = cv2.imread(path)[:,:,0]# print(img.shape)for i in range(768):for j in range(1024):if img[i,j] != 0 :# print(img[i,j])left = min(j,left)right = max(j,right)lower = max(i,lower)upper = min(i,upper)return (left,upper,right,lower)def image_cut_save(path, left, upper, right, lower, save_path):"""所截區域圖片保存:param path: 圖片路徑:param left: 區塊左上角位置的像素點離圖片左邊界的距離:param upper:區塊左上角位置的像素點離圖片上邊界的距離:param right:區塊右下角位置的像素點離圖片左邊界的距離:param lower:區塊右下角位置的像素點離圖片上邊界的距離故需滿足:lower > upper、right > left:param save_path: 所截圖片保存位置"""img = cv2.imread(path) # 打開圖像cropped = img[upper:lower, left:right]# 保存截取的圖片cv2.imwrite(save_path, cropped)if __name__ == '__main__':root_path = r'原圖片的路徑'save_path = r'裁剪后的圖片保存的路徑'images = os.listdir(root_path)for image in images:# print(image)pic_path = os.path.join(root_path,image)# print(pic_path)pic_save_dir_path = os.path.join(save_path,image)print(pic_save_dir_path)left, upper, right, lower = search(pic_path)# show_cut(pic_path, left, upper, right, lower)image_cut_save(pic_path, left, upper, right, lower, pic_save_dir_path)

結果

裁剪后的圖像如下

總結

以上是生活随笔為你收集整理的python opencv实现目标区域裁剪的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。