1.二值图像 :
仅包含黑色和白色两种颜色,每个像素点只使用一个bit位即可表示,实际上在OpenCV中最小的数据类型为无符号的8位数,故而实际上二值图像是特殊的灰度图像
2.灰度图像 :
灰度图像仅有黑白两种颜色,故而不够细腻,损失了很多细节,通常计算机会将灰度处理为256个灰度级用数值区间[0,255]来表示。其中,数值[255]表示纯白色,数值[0]表示纯黑色,每个像素点占用一个字节(8位)
3.彩色图像 :
此处只对RGB色彩空间进行说明,在RGB色彩空间中存在R(红色),G(绿色),B(蓝色)三个通道(特别说明一下,在OpenCV中通道顺序为BGR,即第一个通道保存B通道信息),每个色彩通道的值均在[0,255]之间,每一通道均可理解为一个独立的灰度图像,每个像素点占用3字节的空间。实际上可以将rgb理解为空间直角坐标系的xyz三轴,每一种特定的颜色都有对应的在三轴上的坐标
from cv2 import cv2
import numpy as np
img = np.zeros((6,6),dtype=np.uint8)
print("img=\n",img)
cv2.imshow("one",img)
print("读取像素点img[3,3]=",img[3,3])
img[3,3] = 255
print("修改后 img = \n",img)
print("读取修改后的像素点img=[3,3]",img[3,3])
cv2.imshow("two",img)
cv2.waitKey()
cv2.destroyAllWindows()
效果 :
所以,一像素肉眼可见的小…hhh
from cv2 import cv2 as cv
import numpy as np
img = np.zeros((256,256),dtype=np.uint8)
cv.imshow("first",img)
for i in range(99,100):
for j in range(80,100):
img[i,j] = 255
cv.imshow("second",img)
cv.waitKey()
cv.destroyAllWindows()
效果 :
import numpy as np
from cv2 import cv2 as cv
#----------蓝色-----------
blue = np.zeros((300,300,3),dtype=np.uint8)
blue[:,:,0] = 255
print("blue = \n",blue)
cv.imshow("blue",blue)
#----------绿色-----------
green = np.zeros((300,300,3),dtype=np.uint8)
green[:,:,1] = 255
print("green = \n",green)
cv.imshow("green",green)
#----------红色-----------
red = np.zeros((300,300,3),dtype=np.uint8)
red[:,:,2] = 255
print("red = \n",red)
cv.imshow("red",red)
cv.waitKey()
cv.destroyAllWindows()
效果 :
import numpy as np
from cv2 import cv2 as cv
img = np.zeros((300,300,3),dtype=np.uint8)
img[:,0:100,0] = 255
img[:,100:200,1] = 255
img[:,200:300,2] = 255
print("img = \n",img)
cv.imshow("img",img)
cv.waitKey()
cv.destroyAllWindows()
效果 :
from cv2 import cv2 as cv
import numpy as np
img = cv.imread (r"D:\anaconda\vscode-python\pic\1.jpg")
# 图片随便找的
cv.imshow("first",img)
print("image = \n",img)
print("-------------------------")
# 访问图像第一行第二列像素点的BGR值
print("image[1,2] = ",img[1,2])
cv.waitKey()
cv.destroyAllWindows()
效果 :
import numpy as np
#from cv2 import cv2 as cv
img = np.random.randint(10,99,size=[5,5],dtype=np.uint8)
print("img = \n",img)
# item能够更加高效的访问图像像素点,格式: item(行,列)
print("read img.item(3,2) = ",img.item(3,2))
# itemset()可以修改像素值,格式: itemset(索引值,新值)
img.itemset((3,2),255)
print("img = \n",img)
print("change img.item(3,2) = ",img.item(3,2))
结果 :
import numpy as np
from cv2 import cv2 as cv
img = np.random.randint(0,256,size=[256,256],dtype=np.uint8)
cv.imshow("hhh",img)
cv.waitKey()
cv.destroyAllWindows()
结果 :
import numpy as np
from cv2 import cv2 as cv
img = np.random.randint(0,256,size=[256,256],dtype=np.uint8)
print("read img.item(3,2) = ",img.item(3,2))
img.itemset((3,2),255)
print("change img.item(3,2) = ",img.item(3,2))
cv.imshow("first",img)
#遍历块内像素值并对其进行修改
for i in range(10,100):
for j in range(80,100):
img.itemset((i,j),255)
#显示与基础操作
cv.imshow("second",img)
cv.waitKey()
cv.destroyAllWindows()
结果 :
import numpy as np
from cv2 import cv2 as cv
#img = cv.imread(r"D:\anaconda\vscode-python\1.jpg")
img = np.random.randint(10,255,size=[666,666,3],dtype=np.uint8)
#print("img = \n",img)
print("read img[1,2,0] = ",img.item(1,2,0))
print("read img[0,2,1] = ",img.item(0,2,1))
print("read img[1,2,2] = ",img.item(1,2,2))
img.itemset((1,2,0),255)
img.itemset((0,2,1),255)
img.itemset((1,2,2),255)
#print("img = \n",img)
print("change img[1,2,0] = ",img.item(1,2,0))
print("change img[0,2,1] = ",img.item(0,2,1))
print("change img[1,2,2] = ",img.item(1,2,2))
cv.imshow("hhh",img)
cv.waitKey()
cv.destroyAllWindows()
结果 :
import numpy as np
from cv2 import cv2 as cv
img = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg")
#img = np.random.randint(10,255,size=[666,666,3],dtype=np.uint8)
cv.imshow("before",img)
print("read img.item(0,0,0) = ",img.item(0,0,0))
print("read img.item(0,0,1) = ",img.item(0,0,1))
print("read img.item(0,0,2) = ",img.item(0,0,2))
for i in range(0,400):
for j in range(0,600):
for k in range(0,3):
img.itemset((i,j,k),255)
cv.imshow("after",img)
print("change img.item(0,0,0) = ",img.item(0,0,0))
print("change img.item(0,0,1) = ",img.item(0,0,1))
print("change img.item(0,0,2) = ",img.item(0,0,2))
cv.waitKey()
cv.destroyAllWindows()
结果 :
from cv2 import cv2 as cv
a = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg",cv.IMREAD_UNCHANGED)
roi = a[220:400,250:350]
cv.imshow("original",a)
cv.imshow("roi",roi)
cv.waitKey()
cv.destroyAllWindows()
结果 :
from cv2 import cv2 as cv
a = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg",cv.IMREAD_UNCHANGED)
cv.imshow("ori",a)
b = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg",cv.IMREAD_GRAYSCALE)
cv.imshow("gray",b)
c = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg",cv.IMREAD_COLOR)
cv.imshow("bgr",c)
cv.waitKey()
cv.destroyAllWindows()
结果 :
from cv2 import cv2 as cv
import numpy as np
a = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg",cv.IMREAD_UNCHANGED)
cv.imshow("whole",a)
hhh = np.random.randint(0,256,(100,100,3))
a[200:300,400:500]=hhh
cv.imshow("section",a)
cv.waitKey()
cv.destroyAllWindows()
from cv2 import cv2 as cv
a = cv.imread(r"D:\anaconda\vscode-python\pic\1.jpg",cv.IMREAD_UNCHANGED)
b = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg",cv.IMREAD_UNCHANGED)
cv.imshow("aaa",a)
cv.imshow("bbb",b)
sections = b[200:300,400:500]
a[300:400,700:800] = sections
cv.imshow("hhh",a)
cv.waitKey()
cv.destroyAllWindows()
结果 :
from cv2 import cv2 as cv
a = cv.imread(r"D:\anaconda\vscode-python\pic\1.jpg",cv.IMREAD_UNCHANGED)
b = a[200:300,600:700]
b0 = b[:,:,0]
b1 = b[:,:,1]
b2 = b[:,:,2]
print("B = ",b0)
print("G = ",b1)
print("R = ",b2)
cv.imshow("B",b0)
cv.imshow("G",b1)
cv.imshow("R",b2)
cv.waitKey()
cv.destroyAllWindows()
结果 :
from cv2 import cv2 as cv
lena = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg")
cv.imshow("lena",lena)
b = lena[:,:,0]
g = lena[:,:,1]
r = lena[:,:,2]
cv.imshow("b",b)
cv.imshow("g",g)
cv.imshow("r",r)
lena[:,:,0] = 0
cv.imshow("lena_b0",lena)
lena[:,:,1] = 0
cv.imshow("lena_b0_g0",lena)
cv.waitKey()
cv.destroyAllWindows()
结果 :
from cv2 import cv2 as cv
lena = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg")
b,g,r = cv.split(lena)
cv.imshow("b",b)
cv.imshow("g",g)
cv.imshow("r",r)
cv.waitKey()
cv.destroyAllWindows()
结果 :
from cv2 import cv2 as cv
lena = cv.imread(r"D:\anaconda\vscode-python\pic\timg.jpg")
b,g,r = cv.split(lena)
bgr = cv.merge([b,g,r])
rgb = cv.merge([r,g,b])
gbr = cv.merge([g,b,r])
#cv.imshow("lena",lena)
cv.imshow("bgr",bgr)
cv.imshow("rgb",rgb)
cv.imshow("gbr",gbr)
cv.waitKey()
cv.destroyAllWindows()
结果 :
from cv2 import cv2 as cv
gray = cv.imread(r"D:\anaconda\vscode-python\pic\1.jpg",0)
color = cv.imread(r"D:\anaconda\vscode-python\pic\1.jpg",-1)
print("gray.shape = ",gray.shape)
print("gray.size = ",gray.size)
print("gray.dtype = ",gray.dtype)
print("_________________________________")
print("color.shape = ",color.shape)
print("color.size = ",color.size)
print("color.dtype = ",color.dtype)
# cv.imshow("gray",gray)
# cv.imshow("color",color)
cv.waitKey()
cv.destroyAllWindows()
结果 :
本文参考自 : 李立宗《OpenCV轻松入门 : 面向Python》
手机扫一扫
移动阅读更方便
你可能感兴趣的文章