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图像
两个图像的混合图像