この記事では、Python の画像処理の基礎と OpenCV の入門機能を紹介します。ある程度の参考になります。困っている人は参考にしてください。お役に立てれば幸いです。
画像はピクセル、つまり画像内の小さな正方形で構成されており、この小さな正方形には明確な位置があり、Color 値が割り当てられています。 、これらの小さな正方形の色と位置によって、画像がどのように表示されるかが決まります。ピクセルは画像の最小単位であり、各ビットマップ画像には特定の数のピクセルが含まれており、これによって画面上の画像のサイズが決まります。
#画像には通常、バイナリ イメージ、グレースケール イメージ、カラー イメージが含まれます。
1. バイナリ イメージ
バイナリ イメージ内の任意のポイント黒または白、白 (ピクセルは 255) または黒 (ピクセルは 0) のいずれかです。グレースケール画像をバイナリ画像に変換する処理は、逐次走査判定によって実装されることが多く、ピクセル数が 127 以上の場合は 255、それ以外の場合は 0 に設定されます。
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値を変更して、カラー画像をグレースケール画像に変換します。
カラー画像は RGB 画像であり、RGB は赤、緑、青の三原色を表します。 . コンピュータ内のすべての色 それらはすべて、異なる比率の 3 つの原色、つまり 3 色チャネルで構成されています。
2. OpenCV は画像の読み取りと書き込みを行います
OpenCV は主に次の関数を呼び出すことによって画像を読み取ります:
パラメータ(4) cv2.COLOR_BGR2RGB (画像チャンネルBGRをRGBに変換)
2.表示画像
表示画像呼び出し関数は以下の通りです:
cv2 .imshow( ウィンドウ名, イメージ名)
呼び出し関数は次のとおりです:
cv2.waitKey(lay)
4. すべてのウィンドウを削除します 次のように関数を呼び出します:
cv2.destroyWindows() 指定されたウィンドウを削除します
5.画像を書き込みます次のように関数を呼び出します:
以下のコードは画像を読み込み、表示して保存します。
# -*- 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」という名前の画像が保存されます。
# #
同时
可以对代码进行升级,如下所示:
#无限期等待输入 k=cv2.waitKey(0) #如果输入ESC退出 if k==27: cv2.destroyAllWindows()
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零基础入门之八lambda的表达式和filter、map内置函数
以上がPython画像処理の基礎とOpenCVの機能入門の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。