ホームページ  >  記事  >  バックエンド開発  >  Python画像処理の基礎とOpenCVの機能入門

Python画像処理の基礎とOpenCVの機能入門

不言
不言オリジナル
2018-09-08 17:28:143436ブラウズ

この記事では、Python の画像処理の基礎と OpenCV の入門機能を紹介します。ある程度の参考になります。困っている人は参考にしてください。お役に立てれば幸いです。

1. 画像の基礎知識

画像はピクセル、つまり画像内の小さな正方形で構成されており、この小さな正方形には明確な位置があり、Color 値が割り当てられています。 、これらの小さな正方形の色と位置によって、画像がどのように表示されるかが決まります。ピクセルは画像の最小単位であり、各ビットマップ画像には特定の数のピクセルが含まれており、これによって画面上の画像のサイズが決まります。

Python画像処理の基礎とOpenCVの機能入門

#画像には通常、バイナリ イメージ、グレースケール イメージ、カラー イメージが含まれます。


Python画像処理の基礎とOpenCVの機能入門


1. バイナリ イメージ
バイナリ イメージ内の任意のポイント黒または白、白 (ピクセルは 255) または黒 (ピクセルは 0) のいずれかです。グレースケール画像をバイナリ画像に変換する処理は、逐次走査判定によって実装されることが多く、ピクセル数が 127 以上の場合は 255、それ以外の場合は 0 に設定されます。


Python画像処理の基礎とOpenCVの機能入門

2. グレースケール画像
グレースケール画像には、白と黒に加えて、グレーを組み合わせたグレーもあります。度数を256色に分けており、画像がより鮮明に見えます。カラー イメージをグレースケール イメージに変換することは、画像処理の最も基本的な前処理操作であり、通常は次の方法が含まれます。
(1) 浮動小数点アルゴリズム: Gray=R*0.3 G*0.59 B*0.11
( 2) 整数法: Gray=(R*30 G*59 B*11)/100
(3) シフト法: Gray=(R*28 G*151 B*77)>>8;
(4) 平均法: Gray=(R G B)/3; (このプログラムはアルゴリズムを使用します)
(5) 緑のみを取る: Gray=G;
(6) 加重平均アルゴリズム: 光に応じて明るさR、G、B の特性を一律に Gray に置き換えて新しい色の RGB (Gray、Gray、Gray) を作成し、元の RGB (R、G、B) を置き換えてグレースケール画像を作成します。ピクセルマトリックスのRGB値を変更して、カラー画像をグレースケール画像に変換します。


Python画像処理の基礎とOpenCVの機能入門
3. カラー画像

カラー画像は RGB 画像であり、RGB は赤、緑、青の三原色を表します。 . コンピュータ内のすべての色 それらはすべて、異なる比率の 3 つの原色、つまり 3 色チャネルで構成されています。


Python画像処理の基礎とOpenCVの機能入門


2. OpenCV は画像の読み取りと書き込みを行います

この記事では主に Python2.7 を使用しますおよび OpenCV 説明すると、以下の図に示すように、まず「pip install opencv-python」を呼び出して OpenCV ライブラリをインストールします。画像を読んでください

OpenCV は主に次の関数を呼び出すことによって画像を読み取ります:

img = cv2.imread(ファイル名,[,パラメータ])
パラメータ (1) cv2.IMREAD_UNCHANGED (イメージは不変) Python画像処理の基礎とOpenCVの機能入門 パラメータ(2) cv2.IMREAD_GRAYSCALE (グレースケール画像)
パラメータ(3) cv2.IMREAD_COLOR (カラー画像読み取り)

パラメータ(4) cv2.COLOR_BGR2RGB (画像チャンネルBGRをRGBに変換)
2.表示画像

表示画像呼び出し関数は以下の通りです:

cv2 .imshow( ウィンドウ名, イメージ名)

3. ウィンドウ wait

呼び出し関数は次のとおりです:
cv2.waitKey(lay)

キーボード バインド関数には、待機するミリ秒数を示すパラメーターが 1 つあり、キーボードからの入力があるかどうかを確認するために特定のミリ秒数待機し、戻り値は ASCII 値になります。パラメータが 0 の場合、キーボード入力を無期限に待機することを意味します。パラメータ > 0 は遅延ミリ秒待機することを意味します。パラメータ

4. すべてのウィンドウを削除します 次のように関数を呼び出します:

cv2.destroyAllWindows() すべてのウィンドウを削除します

cv2.destroyWindows() 指定されたウィンドウを削除します

5.画像を書き込みます次のように関数を呼び出します:

retval = cv2.imwrite(ファイル アドレス,ファイル名 )


以下のコードは画像を読み込み、表示して保存します。

# -*- 
coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg")
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)

出力結果は下図のようになり、フォルダ内に「testyxz.jpg」という名前の画像が保存されます。

#コードに watiKey(0) 関数がない場合、実行結果は次のようになります。

# #

Python画像処理の基礎とOpenCVの機能入門

同时
可以对代码进行升级,如下所示:

#无限期等待输入
k=cv2.waitKey(0)
#如果输入ESC退出
if k==27:
    cv2.destroyAllWindows()

三.OpenCV像素处理

1.读取像素
灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。注意OpenCV读取图像是BGR存储显示,需要转换为RGB再进行图像处理。

灰度图像:返回值 = 图像(位置参数)
 eg: test=img[88,42]  
 彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素
 eg: blue=img[88,142,0] green=img[88,142,1] red=img[88,142,2]

2.修改图像
修改图像如果是灰度图像则直接赋值新像素即可,彩色图像依次给三个值赋值即可。

灰度图像:
 img[88,142] = 255
 彩色图像:
 img[88,142, 0] = 255
 img[88,142, 1] = 255
 img[88,142, 2] = 255
 彩色图像:方法二
 img[88,142] = [255, 255, 255]

下面代码是获取像素及修改的操作。

# -*- coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
test = img[88,142]print test
img[88,142] = [255, 255, 255]print test
#分别获取BGR通道像素
blue = img[88,142,0]print blue
green = img[88,142,1]print green
red = img[88,142,2]print red
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)

输出结果如下所示:
[158 107  64]
[255 255 255]
255
255
255

下面代码是将行为100到200、列150到250的像素区域设置为白色。

# -*- coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
#该区域设置为白色
img[100:200, 150:250] = [255,255,255]
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)

运行结果如下图所示:

Python画像処理の基礎とOpenCVの機能入門

相关推荐:

Python编程中使用Pillow来处理图像的基础教程

Python零基础入门之八lambda的表达式和filter、map内置函数

Python基于opencv的图像压缩算法实例分析

以上がPython画像処理の基礎とOpenCVの機能入門の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。