import numpy as np
import cv2 as cv
img=np.zeros((300,300,3),np.uint8)
#cv.imshow('a',img) #展示图片
#cv.waitKey(0) #无限等待
for i in range(300): #遍历每一个像素 使其图片中间生成白线宽
for j in range(300):
if i>=130 and i<=170:
img[i,j]=255
else:
img[i, j] = 0
cv.imshow('a',img) #展示图片
cv.waitKey(0) #无限等待
cv.imwrite('C:/Users/SongJinQiu/Desktop/zuoye/src.jpg', img)
#Robert算子边缘检测
kernelx = np.array([[-1,0],[0,1]], dtype=int) #生成 [[-1 0 [ 0 1]] 的矩阵
kernely = np.array([[0,-1],[1,0]], dtype=int) #生成 [[ 0 -1 [ 1 0]] 的矩阵
x = cv.filter2D(img, cv.CV_16S, kernelx) # x方向对图像做卷积
y = cv.filter2D(img, cv.CV_16S, kernely)# x方向对图像做卷积
absX = cv.convertScaleAbs(x) #其中convertScaleAbs函数功能是将CV_16S型的输出图像转变成CV_8U型的图像。
absY = cv.convertScaleAbs(y)
Roberts = cv.addWeighted(absX,0.5,absY,0.5,0) #用来将两个图片进行融合。
cv.imshow("Robert",Roberts)
cv.waitKey(0)
cv.imwrite('C:/Users/SongJinQiu/Desktop/zuoye/Roberts.jpg', Roberts)