Python-OpenCV_pythonの基本的な操作方法を詳しく解説

不言
リリース: 2018-04-02 16:33:51
オリジナル
4400 人が閲覧しました

Python-OpenCV の基本的な操作方法については、以下のエディターで詳しく説明していますので、参考にしていただければ幸いです。エディターをフォローして一緒に見てみましょう

基本属性

cv2.imread (ファイル名、属性) 画像を読み取ります

属性: 画像がファイルを読み取る方法を指定します

cv2.IMREAD_COLOR :カラー画像の読み込み、デフォルトパラメータ、Opencv は BGR モードでカラー画像を読み込みます。 ! !注

cv2.IMREAD_GRAYSCALE: グレースケール画像を読み取ります。

cv2.imshow (ウィンドウ名、画像ファイル) 表示画像

複数のウィンドウを作成可能

cv2.waitKey() キーボードバインド関数

この関数は、特定の数ミリ秒間待機して、入力されたかどうかを確認しますキーボード。

cv2.namedWindow(ウィンドウ名, 属性) ウィンドウを作成します

Attribute: ウィンドウサイズモードを指定します

cv2.WINDOW_AUTOSIZE: 画像サイズに基づいてサイズを自動的に作成します

cv2.WINDOW_NORMAL: ウィンドウサイズは調整可能

cv2. destroyAllWindows (ウィンドウ名) 作成したウィンドウを削除します

コード例:

import cv2
 img=cv2.imread('test.py',cv2.IMREAD_COLOR)
 cv2.namedWindow('image',cv2.WINDOW_NORMAL)
 cv2.imshow('image',img)
 cv2.waitKey(0)
 cv2.destoryAllWindows()
ログイン後にコピー

cv2.imwrite (画像名を保存、画像を保存する必要があります) 画像を保存

コード例:

 import cv2
 img=cv2.imread('test.png',0)
 cv2.imshow('image',img)
 k=cv2.waitKey(0)
 if k==27: #等待 ESC 键
  cv2.destoryAllWindows()
 elif k==ord('s') #等待 's' 键来保存和退出
  cv2.imwrite('messigray.png',img)
  cv2.destoryAllWindows()
ログイン後にコピー

画像に対するいくつかの操作

0x01。画像属性を取得します

0x02。

画像を処理するとき、一部の情報を直接出力します。画像のテキスト形式

cv2.putText (画像名、テキスト、座標、テキストの色) 0x03。画像のズームと保存を実装します。これは、次の場合に一般的な操作です。 OpenCVを使用します。 cv2.resize() は、さまざまな補間アルゴリズムをサポートしています。デフォルトでは、縮小に最適なアルゴリズムは cv2.INTER_AREA です。拡大に最適なのは cv2.INTER_LINEAR です。

import cv2
img=img.imread('test.png')
print img.shape
#(768,1024,3)
print img.size
#2359296 768*1024*3
print img.dtype
#uint8
ログイン後にコピー

または:

res=cv2.resize(image,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
ログイン後にコピー

スケール係数は後で設定されるため、ここには出力画像のサイズを指定する必要はありません

0x04。ええ

移動とは画像の位置を変更することであり、移動距離が (tx, ty) の場合、(x, y) 方向に移動する必要があります。オフセット行列 M を構築する必要があります。

たとえば、画像 (100,50) を変換します

res=cv2.resize(image,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
ログイン後にコピー

ここで、(cols, rows) は出力画像のサイズを表し、M は変換行列、100 は出力画像のサイズを表しますx のオフセット、50 y のオフセットをピクセル単位で表します。

0x05. 画像の回転

OpenCV では、まず、cv2.getRotationMatrix2D を通じて取得される回転行列を構築する必要があります。

cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
ログイン後にコピー

0x06. アフィン変換

アフィン変換では、元の画像内のすべての平行線が結果の画像内で等しく平行になります。オフセット行列を作成するには、元のイメージ内の 3 つの点と、出力イメージ内のそれらの位置を見つける必要があります。次に、OpenCV は 2*3 行列を作成するための cv2.getAffineTransform を提供し、最後に行列を関数 cv2.warpAffine に渡します。

 import cv2
 img=cv2.imread('test.png',1)
 rows,cols,channel=img.shape
 M=np.float32([[1,0,100],[0,1,50]])
 dst=cv2.warpAffine(img,M,(cols,rows))
 cv2.imshow('img',dst)
 cv2.waitKey(0)
 cv2.destoryALLWindows()
ログイン後にコピー

0x07。視点変換ビュー変換には 3*3 変換行列が必要です。変形の前後でも直線がまっすぐであることを確認してください。この行列を構築するには、入力画像内の 4 つの点と、出力画像内のそれらの対応する位置を見つける必要があります。これら 4 つの点のうち 3 つが同一線上にあることはできません。変換行列 OpenCV は、cv2.getPerspectiveTransform() 構造を提供します。次に、行列を関数 cv2.warpPerspective に渡します。

import cv2
img=cv2.imread('test.png',0)
rows,cols=img.shape
#第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
M=cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
#第三个参数为图像的尺寸中心
dst=cv2.warpAffine(img,M,(2*cols,2*rows))
cv2.imshow('img',dst)
cv2.waitKey(0)
cv2.destoryALLWindows()
ログイン後にコピー

0x09。画像の特定の領域を操作する必要がある場合があり、ROI は Numpy インデックスを使用して取得されます。

import cv2
import matplotlib.pyplot as plt
import numpy as np
img=cv2.imread('test.png')
rows,cols,ch=img.shape
pts1=np.float32([[50,50],[200,50],[50,200]])
pts2=np.float32([[10,100],[200,50],[100,250]])
M=cv2.getAffineTransform(pts1,pts2)
dst=cv2.warpAffine(img,M,(cols,rows))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()
ログイン後にコピー

0x10. チャネル分割/結合処理

場合によっては、3 つの BGR チャネルを個別に操作する必要があります。現時点では、BGR を 1 つのチャネルに分割する必要があります。同時に、独立したチャネル イメージを BGR イメージにマージする必要がある場合があります。 OpenCVライブラリ関数のバージョンを使用

import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('test.png')
rows,cols,ch=img.shape
pts1=np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2=np.float32([[0,0],[300,0],[0,300],[300,300]])
M=cv2.getPerspectiveTransform(pts1,pts2)
dst=cv2.warpPerspective(img,M,(300,300))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()
ログイン後にコピー

Numpyインデックスのバージョンを使用:

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread('pitt1.jpg')
rows,cols,ch=image.shape
#直接获取
b=img[:,:,0]
ログイン後にコピー


以上がPython-OpenCV_pythonの基本的な操作方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!