记录笔者学习Python-opencv第三课:图像对象的创建与赋值,代码资料来源于网络贾老师视频。
代码如下:
import cv2 as cv
import numpy as np
代码如下:
def mat_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
代码如下:
print(image.shape) #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道
cv.imshow("image", image)
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
代码如下:
import cv2 as cv
import numpy as np
def read_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
cv.imshow("input", image)
cv.waitKey(0)
cv.destroyAllWindows()
def color_space_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv
thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR
# cv.namedwindow("input",cv.WINDOW.AUTOSIZE)
cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像
cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像
cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
def mat_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
print(image.shape) #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道
cv.imshow("image", image)
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
if __name__ == "__main__":
mat_demo_()
运行结果:
结论:可以看到是一个400x400像素,rgb图像因为是三通道。其中,第一个参数400是H高度,第二个参数400是W宽度,第三个参数是通道数。
a.如果将图片改为灰色图,应该不会显示三通道,只有400x400像素。
更改代码,只需将图片读取函数image = cv.imread(“C:/Users/akaak/Pictures/OpenCV/1.png”),改为 image = cv.imread(“C:/Users/akaak/Pictures/OpenCV/1.png”,cv.IMREAD_GRAYSCALE) 即可实现灰度图像读取。
代码如下:
import cv2 as cv
import numpy as np
def read_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
cv.imshow("input", image)
cv.waitKey(0)
cv.destroyAllWindows()
def color_space_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv
thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR
# cv.namedwindow("input",cv.WINDOW.AUTOSIZE)
cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像
cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像
cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
def mat_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png",cv.IMREAD_GRAYSCALE) # BGR 0-255
print(image.shape) #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道
cv.imshow("image", image)
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
if __name__ == "__main__":
mat_demo_()
可以看到灰度图只有两个参数,H高度和宽度W,400x400,没有通道数。
b.如何创建一个空白窗口
更改代码, 需使用blank=np.zeros_like(image),函数即可实现空白窗口的建立。
代码如下:
import cv2 as cv
import numpy as np
def read_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
cv.imshow("input", image)
cv.waitKey(0)
cv.destroyAllWindows()
def color_space_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv
thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR
# cv.namedwindow("input",cv.WINDOW.AUTOSIZE)
cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像
cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像
cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
def mat_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png",cv.IMREAD_GRAYSCALE) # BGR 0-255
print(image.shape) #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道
blank = np.zeros_like(image)#产生一个空白窗口
cv.imshow("image", image)#显示原图窗口
cv.imshow("blank", blank)#显示blank空白窗口
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
if __name__ == "__main__":
mat_demo_()
c.如何将图片中的一部分(区域)拷贝过来
更改代码, 需使用roi = image[100:200, 100:200, :],blank[60:200, 60:280, :] = image[60:200, 60:280, :]
函数即可实现空白窗口的建立。
感兴趣局部区域像素分布 H高度100-200像素,W宽度100-200像素。灰度图像就没有最后一个冒号。blank和image要一致才能匹配。
代码如下:
import cv2 as cv
import numpy as np
def read_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
cv.imshow("input", image)
cv.waitKey(0)
cv.destroyAllWindows()
def color_space_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv
thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR
# cv.namedwindow("input",cv.WINDOW.AUTOSIZE)
cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像
cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像
cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
def mat_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
print(image.shape) #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道
roi = image[100:200, 100:200, :] # 感兴趣局部区域像素分布 H高度100-200像素,W宽度100-200像素。灰度图像就没有最后一个冒号
blank = np.zeros_like(image)#产生一个空白窗口
blank[60:200, 60:280, :] = image[60:200, 60:280, :] # blank和image要一致才能匹配
cv.imshow("image", image)#显示原图窗口
cv.imshow("blank", blank)#显示roi局部感兴趣图片的blank窗口
cv.imshow("roi", roi)#单独显示roi局部感兴趣图片窗口
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
if __name__ == "__main__":
mat_demo_()
d.如何创建一个空白窗口(第二种方式)
更改代码, 需使用blank=np.zeros((h,w,c),dtype=np.uint8),h,w,c=image.shape,函数即可实现空白窗口的建立。
需要说明H,W,C以及字节数,这是区别于np.zeros_like()函数。
代码如下:
import cv2 as cv
import numpy as np
def read_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
cv.imshow("input", image)
cv.waitKey(0)
cv.destroyAllWindows()
def color_space_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv
thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR
# cv.namedwindow("input",cv.WINDOW.AUTOSIZE)
cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像
cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像
cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
def mat_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
h,w,c=image.shape #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道
roi = image[100:200, 100:200, :] # 感兴趣局部区域像素分布 H高度100-200像素,W宽度100-200像素。灰度图像就没有最后一个冒号
blank=np.zeros((h,w,c),dtype=np.uint8)#产生一个空白窗口,需要说明H,W,C以及字节数,这是区别于np.zeros_like()函数。
blank[60:200, 60:280, :] = image[60:200, 60:280, :] # blank和image要一致才能匹配
cv.imshow("image", image)#显示原图窗口
cv.imshow("blank", blank)#显示blank空白窗口
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
if __name__ == "__main__":
mat_demo_()
e.如何将原始图片copy到空白窗口
更改代码, 需使用blank = np.copy(image),函数即可实现。将roi部分的blank上述代码注释掉。也可以用blank=image直接复制。
代码如下:(blank = np.copy(image))
import cv2 as cv
import numpy as np
def read_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
cv.imshow("input", image)
cv.waitKey(0)
cv.destroyAllWindows()
def color_space_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv
thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR
# cv.namedwindow("input",cv.WINDOW.AUTOSIZE)
cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像
cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像
cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
def mat_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
h,w,c=image.shape #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道
roi = image[100:200, 100:200, :] # 感兴趣局部区域像素分布 H高度100-200像素,W宽度100-200像素。灰度图像就没有最后一个冒号
blank=np.zeros((h,w,c),dtype=np.uint8)#产生一个空白窗口,需要说明H,W,C以及字节数,这是区别于np.zeros_like()函数。
#blank[60:200, 60:280, :] = image[60:200, 60:280, :] # blank和image要一致才能匹配
blank = np.copy(image)#使用copy函数直接进行复制,将blank上述注释掉
cv.imshow("image", image)#显示原图窗口
cv.imshow("blank", blank)#显示blank空白窗口
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
if __name__ == "__main__":
mat_demo_()
代码如下:(blank=image)
import cv2 as cv
import numpy as np
def read_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
cv.imshow("input", image)
cv.waitKey(0)
cv.destroyAllWindows()
def color_space_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv
thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR
# cv.namedwindow("input",cv.WINDOW.AUTOSIZE)
cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像
cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像
cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
def mat_demo_():
image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
h,w,c=image.shape #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道
roi = image[100:200, 100:200, :] # 感兴趣局部区域像素分布 H高度100-200像素,W宽度100-200像素。灰度图像就没有最后一个冒号
blank=np.zeros((h,w,c),dtype=np.uint8)#产生一个空白窗口,需要说明H,W,C以及字节数,这是区别于np.zeros_like()函数。
#blank[60:200, 60:280, :] = image[60:200, 60:280, :] # blank和image要一致才能匹配
#blank = np.copy(image)#使用copy函数直接进行复制,将blank上述注释掉
blank=image#实现原图到blank的复制
cv.imshow("image", image)#显示原图窗口
cv.imshow("blank", blank)#显示blank空白窗口
cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭
cv.destroyAllWindows()
if __name__ == "__main__":
mat_demo_()
本文介绍了笔者学习Python-opencv第三课:图像对象的创建与赋值,学习了彩色图与灰度图的区别,产生一个空白窗口的两种方式,将图片中的一部分(区域)拷贝过来,以及将整一副图copy复制。(代码资料来源于网络贾老师视频)