流浪小小翔

导航

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图像

两个图像的混合图像

 

posted on 2017-02-10 18:10  流浪的根号3  阅读(182)  评论(0编辑  收藏  举报