最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+OpenCV 實現(xiàn)圖片無損旋轉(zhuǎn)90°且無黑邊

 更新時間:2019年12月12日 15:28:36   作者:FistQ  
今天小編就為大家分享一篇Python+OpenCV 實現(xiàn)圖片無損旋轉(zhuǎn)90°且無黑邊,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

0. 引言

有如上一張圖片,在以往的圖像旋轉(zhuǎn)處理中,往往得到如圖所示的圖片。

然而,在進行一些其他圖像處理或者圖像展示時,黑邊帶來了一些不便。本文解決圖片旋轉(zhuǎn)后出現(xiàn)黑邊的問題,實現(xiàn)了圖片尺寸不變的旋轉(zhuǎn)(以上提到的黑邊是圖片的一部分)。

1. 方法流程

(1)旋轉(zhuǎn)圖片,得到有黑邊的旋轉(zhuǎn)圖片。

(2)找出圖片區(qū)域(不含黑邊)的位置。

(3)創(chuàng)建一個空圖片(其實是矩陣)。

(4)將圖片區(qū)域搬到此空圖片。

2. 程序

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
This program is debugged by Harden Qiu.
You can send a e-mail to hardenqiu@foxmail.com for more details.
"""
import numpy as np
import cv2
def main():
  img = cv2.imread('.\\imgs\\img10.jpg')
  height, width = img.shape[:2]

  matRotate = cv2.getRotationMatrix2D((height * 0.5, width * 0.5), -90, 1)
  dst = cv2.warpAffine(img, matRotate, (width, height*2))
  rows, cols = dst.shape[:2]

  for col in range(0, cols):
    if dst[:, col].any():
      left = col
      break

  for col in range(cols-1, 0, -1):
    if dst[:, col].any():
      right = col
      break

  for row in range(0, rows):
    if dst[row,:].any():
      up = row
      break

  for row in range(rows-1,0,-1):
    if dst[row,:].any():
      down = row
      break

  res_widths = abs(right - left)
  res_heights = abs(down - up)
  res = np.zeros([res_heights ,res_widths, 3], np.uint8)

  for res_width in range(res_widths):
    for res_height in range(res_heights):
      res[res_height, res_width] = dst[up+res_height, left+res_width]

  cv2.imshow('res',res)

  cv2.imshow('img',img)
  cv2.imshow('dst', dst)
  cv2.waitKey(0)

if __name__ =='__main__':
  main()

說明:img表示原圖,dst表示旋轉(zhuǎn)后圖片,res表示最終處理獲取的圖片。

運行程序,得到如圖所示的圖片,解決了遇到的問題。

3. 總結(jié)

本圖像處理方法用到了以下幾個重要函數(shù):

cv2.getRotationMatrix2D

cv2.warpAffine

編程過程中,要理清楚圖片各個像素點的橫縱變化及其變化大小。在進行像素傳遞時,要注意對應(yīng)關(guān)系。

以上這篇Python+OpenCV 實現(xiàn)圖片無損旋轉(zhuǎn)90°且無黑邊就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

页游| 卫辉市| 华蓥市| 密山市| 特克斯县| 拜泉县| 宜兴市| 饶平县| 嘉峪关市| 武邑县| 常山县| 汝南县| 老河口市| 思南县| 景泰县| 武强县| 祁连县| 科技| 杭锦后旗| 商都县| 绥滨县| 疏附县| 吴旗县| 石渠县| 侯马市| 云林县| 西城区| 青海省| 永康市| 平陆县| 察雅县| 平阴县| 淮安市| 佛学| 建瓯市| 苏尼特右旗| 白朗县| 龙州县| 汝南县| 武山县| 襄汾县|