OpenCVの各種画像処理演算子

OpenCVの各種画像処理演算子

  1. ロバーツ演算子

import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
#读取图像
path=os.getcwd()
img_path=path+'\\'+'code.png'
img=cv2.imread(img_path)
lenna_img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

#灰度化处理图像
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#Roberts算子
kernelx=np.array([[-1,0],[0,1]],dtype=int)
kernely=np.array([[0,-1],[1,0]],dtype=int)
x=cv2.filter2D(grayImage,cv2.CV_16S,kernelx)
y=cv2.filter2D(grayImage,cv2.CV_16S,kernely)

#转uint8
absX=cv2.convertScaleAbs(x)
absY=cv2.convertScaleAbs(y)
Roberts=cv2.addWeighted(absX,0.5,absY,0.5,0)


#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']

#显示图像
titles=[u'原始图像','Roberts算子']
images=[lenna_img,Roberts]
for i in range(2):
    plt.subplot(1,2,i+1)
    plt.imshow(images[i])
    plt.title(titles[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

ここに画像を挿入説明
3.プルウィットオペレータ

import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
path=os.getcwd()
img_path=path+'\\'+'code.png'
img=cv2.imread(img_path)
res1=cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
lenna_img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#灰度化处理图像
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#Prewitt算子
kernelx=np.array([[1,1,1],[0,0,0],[-1,-1,-1]],dtype=int)
kernely=np.array([[-1,0,1],[-1,0,1],[-1,0,1]],dtype=int)
x=cv2.filter2D(grayImage,cv2.CV_16S,kernelx)
y=cv2.filter2D(grayImage,cv2.CV_16S,kernely)

#转uint8
absX=cv2.convertScaleAbs(x)
absY=cv2.convertScaleAbs(y)
Prewitt=cv2.addWeighted(absX,0.5,absY,0.5,0)

#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']

#显示图像
titles=[u'原始图像','Prewitt算子']
images=[lenna_img,Prewitt]
for i in range(2):
    plt.subplot(1,2,i+1)
    plt.imshow(images[i])
    plt.title(titles[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

ここに画像を挿入説明
5.ソーベル演算子

import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
path=os.getcwd()
img_path=path+'\\'+'code.png'
img=cv2.imread(img_path)
res1=cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
lenna_img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#灰度化处理图像
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#Sobel算子
x=cv2.Sobel(grayImage,cv2.CV_16S,1,0) #对x求一阶导
y=cv2.Sobel(grayImage,cv2.CV_16S,0,1) #对y求一阶导

#转uint8
absX=cv2.convertScaleAbs(x)
absY=cv2.convertScaleAbs(y)
Sobel=cv2.addWeighted(absX,0.5,absY,0.5,0)

#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']

#显示图像
titles=[u'原始图像','Sobel算子']
images=[lenna_img,Sobel]
for i in range(2):
    plt.subplot(1,2,i+1)
    plt.imshow(images[i])
    plt.title(titles[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

ここに画像を挿入説明
7.ラプラス算子

import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
path=os.getcwd()
img_path=path+'\\'+'code.png'
img=cv2.imread(img_path)
res1=cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
lenna_img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#灰度化处理图像
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#拉普拉斯算法
dst=cv2.Laplacian(grayImage,cv2.CV_16S,ksize=3)
Laplocian=cv2.convertScaleAbs(dst)
#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']

#显示图像
titles=[u'原始图像','Laplacian算子']
images=[lenna_img,Laplocian]
for i in range(2):
    plt.subplot(1,2,i+1)
    plt.imshow(images[i])
    plt.title(titles[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

ここに画像を挿入説明

公開された41元の記事 ウォンの賞賛0 ビュー777

おすすめ

転載: blog.csdn.net/qestion_yz_10086/article/details/104898376