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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Numpy数组图像基本操作方法,及截取ROI、增加行与列

發布時間:2023/11/27 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Numpy数组图像基本操作方法,及截取ROI、增加行与列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Numpy數組截取ROI,增加列、行

    • 1)圖片基本操作:讀寫、顯示、縮放、旋轉
    • 2)截取ROI,為圖片增加行、列
    • 參考

圖片在Numpy數組中使用ndarry表示的。

比如分辨率: 400 * 500的一張圖,想為邊緣增加黑色邊框怎么整呢,想輕松的截取圖片怎么整呢?都是對數組的操作;

1)圖片基本操作:讀寫、顯示、縮放、旋轉

  • 圖片的讀取
  • 顯示
  • 寫入
  • 縮放(保持寬高比與不保持寬高比的)
  • 旋轉(丟失圖片信息的和不丟失的)

縮放效果圖:保持寬高比 VS 不保持寬高比

  • imutil.resize 保持寬高比

  • cv2.resize 不保持寬高比,可以看到二維碼有點變形了;

    旋轉效果圖:不丟失圖片信息 VS 丟失圖片信息

  • imutils.rotate_bound 不會丟失

  • imutils.rotate 同 cv2.warpAffine都會丟失信息,如下圖

import cv2
import imutils
import numpy as np# 讀取圖片,cv2.imread 默認3通道BGR圖,若想讀取png透明圖,則需要指定 cv2.IMREAD_UNCHANGED
# image = cv2.imread("/images/bycycle.png", cv2.IMREAD_UNCHANGED)
img = cv2.imread('./images/b11.jpg')
img1 = cv2.imread('./images/bars2.jpg')# 圖片顯示
cv2.imshow("origin", img)
cv2.waitKey(0)# 圖片縮放
# imutils.resize保持寬高比,cv2.resize保持寬高比
cv2.imshow("keep ratio", imutils.resize(img1, width=300))
cv2.waitKey(0)
cv2.imshow('not keep ratio', cv2.resize(img1, (300, 200), interpolation=cv2.INTER_AREA))
cv2.waitKey(0)img = img[230:, :500]
cv2.imshow("origin img", img)
cv2.waitKey(0)# 圖片旋轉
# imutils.rotate 同 cv2.warpAffine 都會丟失
# imutils.rotate_bound 不會丟失
cv2.imshow("imutils.rotate_bound not lose ", imutils.rotate_bound(img, 60))
cv2.waitKey(0)
cv2.imshow("imutils.rotate lose", imutils.rotate(img, 60))
cv2.waitKey(0)
(h, w) = img.shape[:2]
center = (w / 2, h / 2)
M = cv2.getRotationMatrix2D(center, 60, 1.0)
rotated = cv2.warpAffine(img, M, (w, h))
cv2.imshow("cv2.warpAffine lose", rotated)
cv2.waitKey(0)

2)截取ROI,為圖片增加行、列

頂部增加行效果圖(頂部黑色部分為增加行)

左側增加列效果圖(黑色部分為增加列)

import cv2
import numpy as npimg = cv2.imread('./images/b11.jpg')
# M * N
img = img[:400, :500]  # 數組切片獲取ROI
cv2.imshow("ROI",img)
cv2.waitKey(0)black = 0 # 增加列的顏色,改為255改為白色col = np.ones((50, img.shape[0], 3))# M * (5+N) 左側+50列黑色
img_left = np.insert(img, 0, col * black, axis=1)
cv2.imshow("img_left", img_left)
cv2.waitKey(0)# M * (N+5) 右側+50列黑色
img_right = np.insert(img, img.shape[1], col * black, axis=1)
cv2.imshow("img_right", img_right)
cv2.waitKey(0)# (50+M) * N 上邊+50列
row = np.ones((50, img.shape[1], 3))
img_top = np.insert(img, 0, row * black, axis=0)
cv2.imshow("img_top", img_top)
cv2.waitKey(0)# (M+50) * N 底部+50列
img_bottom = np.insert(img, img.shape[0], row * black, axis=0)
cv2.imshow("img_bottom", img_bottom)
cv2.waitKey(0)
cv2.destroyAllWindows()

參考

  • https://www.bbsmax.com/A/QV5ZqObJyb/

總結

以上是生活随笔為你收集整理的Numpy数组图像基本操作方法,及截取ROI、增加行与列的全部內容,希望文章能夠幫你解決所遇到的問題。

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