opencv学习心得第二章
opencv操作核心
1:图像的基础操作
获取像素值并且修改
改变像素之前:
import cv2#导入cv2模块 img = cv2.imread("a.jpg")#读取图片 cv2.imshow("image", img)#展示图片 k = cv2.waitKey(0)&0xFF#等待键盘输入 for i in range(625):#通过for循环找到图片的坐标 for j in range(1024):#通过for循环找到图片的坐标 print(i, j)输出i与j的值 print(img[i, j])输出图像每个像素点的rgb值 img[i, j] = [100, 25, 77]重新设置像素值 print(img[i, j])输出像素值 print(img.size) 输出图像的像素个数 if k == ord("s"): 如果键盘上面按s cv2.imwrite("image-new.jpg",img)保存图像 cv2.destroyAllWindows()关闭所有图像窗口
改变像素以后:
2:获取图像属性
import cv2#导入模块 img = cv2.imread("a.jpg")#读取图片 print(img.shape)#图像的矩阵的行数和 print(img.size)#图像像素个数 print(img.dtype)
3:改变BGR某一色道的数字
原图像
只显示B色道的像素值
import cv2 #导入cv2模块 img = cv2.imread("a.jpg")#读取图像 img[:, :, 1] = 0#将图片的G通道像素设置为0 img[:, :, 2 ] = 0#将图片的R通道像素设置为0 cv2.imshow("image", img)#显示图片 cv2.waitKey(0)
只显示G色道像素值
import cv2#导入模块 img = cv2.imread("a.jpg")读取图片 img[:, :, 0] = 0#把图片的B色道像素值设置为0 img[:, :, 2 ] = 0#把图片的R色道像素值设置为0 cv2.imshow("image", img)#显示图片 cv2.waitKey(0)
只显示R色道像素值
import cv2导入模块 img = cv2.imread("a.jpg")#读取图片 img[:, :, 1] = 0#把图片的G通道像素值设置为0 img[:, :, 0] = 0#把图片的B通道像素值设置为0 cv2.imshow("image", img)#显示图片 cv2.waitKey(0)
图像的ROI
import cv2 #导入模块 img = cv2.imread("a.jpg")#读取图像 a = img[300:400, 300:400]#截取图像的一个区域 img[0:100, 0:100] = a #将截取的区域赋值给相同的一个新区域 cv2.imshow("image", img)#显示图片 cv2.waitKey(0)
图像上面的算术运算
图像的混合
import cv2#导入模块 img1 = cv2.imread("c.jpg")#读取图像 img2 = cv2.imread("d.jpg")#读取图像 dst = cv2.addWeighted(img1,0.7,img2,0.3,0)#将两个图像叠加到一起 cv2.imshow("dst",dst)#显示图像 cv2.waitKey(0)
img1图像
img2图像
两个图像的混合图像