本文共 2925 字,大约阅读时间需要 9 分钟。
客观世界物体反射或透射光的分布,是客观世界的反映人类视觉系统对图的响应,是人的大脑的印象或认识,是人的感觉的一种
数字图像由二维的元素组成,每个元素包含一个坐标以及响应值 数字图像处理是针对特定任务,提升图像的可理解性 起源:研究员 Gary Bradski在为英特尔时注意到MIT 的媒体实验室,拥有非常完备的内部公开的计算机视觉开发接口——代码从一个学生传到另一个学生手中,并且会给每个新来的学生一个有价值的由他们自己开发的视觉应用方案。 目标:为高级的视觉研究提供开源并且优化过的基础代码,不再需要重复造轮子。以提供开发者可以在此基础上进行开发的通用接口为手段传播视觉相关知识,这样代码有更强的可读性和移植性。以创造可移植的、优化过的免费开源代码来推动基于高级视觉的商业应用,这些代码可以自由使用,不要求商业应用程序开放或免费!import cv2img=cv2.imread('dog.jpg')imgcv2.imshow('Dog',img) cv2.waitKey() cv2.destroyAllWindows()
img1=cv2.imread('dog.jpg',cv2.IMREAD_GRAYSCALE)img2=cv2.imread('dog.jpg',cv2.IMREAD_COLOR)cv2.imshow('Dog2',img1) cv2.waitKey(0) cv2.destroyAllWindows()
cv2.imwrite('littledoge.jpg',img)
访问图像,修改像素
img=cv2.imread("dog.jpg")cv2.imshow("before",img)print("访问img[0,0]=",img[0,0])print("访问img[0,0,0]=",img[0,0,0])print("访问img[0,0,1]=",img[0,0,1])print("访问img[0,0,2]=",img[0,0,2])print("访问img[50,0]=",img[50,0])print("访问img[100,0]=",img[100,0])
#区域1for i in range(0,50): for j in range(0,100): for k in range(0,3): img[i,j,k]=255 #白色#区域2for i in range(50,100): for j in range(0,100): img[i,j]=[128,128,128] #灰色 #区域3 for i in range(100,150): for j in range(0,100): img[i,j]=0 #黑色 cv2.imshow("after",img)print("修改后img[0,0]=",img[0,0])print("修改后img[0,0,0]=",img[0,0,0])print("修改后img[0,0,1]=",img[0,0,1])print("修改后img[0,0,2]=",img[0,0,2])print("修改后img[50,0]=",img[50,0])print("修改后img[100,0]=",img[100,0])cv2.waitKey()cv2.destroyAllWindows()
import numpy as npimgrad=np.random.randint(0,256,size=[256,256,3],dtype=np.uint8)cv2.imshow("demo",imgrad)cv2.waitKey()cv2.destroyAllWindows()img2=np.random.randint(0,256,size=[256,256,3],dtype=np.uint8)for i in range(0,50): for j in range(0,100): for k in range(0,3): img2[i,j,k]=255 cv2.imshow("before",imgrad)cv2.imshow('after',img2)cv2.waitKey()cv2.destroyAllWindows()
import numpy as npimg=np.random.randint(10,99,size=[5,5],dtype=np.uint8)print("img=\n",img)print("读取像素点img[3,2]=",img.item(3,2))img.itemset((3,2),255)print("修改后img=\n",img)print("修改后像素点img[3,2]=",img.item(3,2))
通道拆分-通过索引拆分
import cv2dog=cv2.imread('dog.jpg')cv2.imshow('dog',dog)b=dog[:,:,0]g=dog[:,:,1]r=dog[:,:,2]cv2.imshow("b",b)cv2.imshow("g",g)cv2.imshow("r",r)cv2.waitKey()cv2.destroyAllWindows()
通道拆分-通过函数拆分
dog=cv2.imread('dog.jpg')b,g,r=cv2.split(dog)cv2.imshow("B",b)cv2.imshow("G",g)cv2.imshow("R",r)cv2.waitKey()cv2.destroyAllWindows()bgr=cv2.merge([b,g,r])rgb=cv2.merge([r,g,b])cv2.imshow("dog",dog)cv2.imshow("bgr",bgr)cv2.imshow("rgb",rgb)cv2.waitKey()cv2.destroyAllWindows()
将shape.jpg中的蓝色三角形改变成黑色
import cv2img=cv2.imread('shape.jpg')cv2.imshow('src',img)height,width,_=img.shapeb,g,r=cv2.split(img)for i in range(height): for j in range(1,width): for k in range(2): if 100 <200: img.itemset((i,j,k),0)cv2.imshow('dst',img)cv2.waitKey()cv2.destroyAllWindows()
转载地址:http://wlklf.baihongyu.com/