#对图像的像素处理
#法1
print("------------------------")
image = cv.imread("D:/1.jpeg",cv.IMREAD_UNCHANGED)
cv.imshow("original image",image)
image[100:150,100:150] = [255,255,255] #对感兴趣图像进行像素处理
cv.imshow("changed image",image)
cv.waitKey(0)
cv.destroyAllWindows()
#法2
print("----------------HELLO------------------")
image = cv.imread("D:/1.jpeg",cv.IMREAD_UNCHANGED)
print(image.item(100,100,0))
image.itemset((100,100,0),255)
print(image.item(100,100,0))
#图像的一些基本属性
print("------------------HELLO-----------------")
image1 = cv.imread("D:/1.jpeg",cv.IMREAD_GRAYSCALE)
image2 = cv.imread("D:/1.jpeg",cv.IMREAD_UNCHANGED)
print(image1.shape) #shape返回图像的行数,列数和通道数(灰度图像为1,不显示)
print(image2.shape)
print(image1.size) #size返回图像的总像素个数,即行数*列数*通道数
print(image2.size)
print(image1.dtype) #dtype返回图像像素点的类型
print(image2.dtype)
#POI区域的图像处理
print("-----------------HELLO-----------------")
image = cv.imread("E:/pictures/1.jpeg")
image2 = np.ones((100,100,3)) #创建一个100行100列3通道全为1的二维数组,即一幅图像
image2 = image[100:300,100:300] #把原图的第100~300行100~300列的内容复制到新建的图像上
image[0:200,0:200] = image2 #把POI区域复制到原图的等大小区域内
cv.imshow("orginal",image)
cv.imshow("face",image2)
image3 = cv.imread("E:/pictures/2.jpeg")
image3[100:300,100:300] = image2
cv.imshow("new",image3)
cv.waitKey(0)
cv.destroyAllWindows()
#通道的分离和组合
print("------------------HELLO-----------------------")
image = cv.imread("E:/pictures/1.jpeg",cv.IMREAD_UNCHANGED)
cv.imshow("orginal",image)
b,g,r = cv.split(image) #split方法返回图像的3个通道的图像,类似于灰度图像
"""
rows,cols,chn = image.shape #可以指定下标以得到想要通道的像素情况
b = np.zeros((rows,cols),image.dtype) #新建单通道的和原图像等大小,等类型的全为0的图像
g = cv.split(image)[1]
r = np.zeros((rows,cols),image.dtype)
"""
cv.imshow("B",b)
cv.imshow("G",g)
cv.imshow("R",r)
m = cv.merge([b,g,r]) #merge方法可以组合通道形成多通道图像,但要注意顺序【B,G,R】和【R,B,G】不同
cv.imshow("merge",m)
cv.waitKey(0)
cv.destroyAllWindows()