图像基础操作

本文介绍了图像的基础操作,包括使用Python和OpenCV库进行彩色、灰度图像的读取和显示,视频播放,动画视频生成。同时探讨了图像的位操作,如按位与、或、异或运算,并展示了不同颜色背景下与全白和全黑图像的运算结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、准备一张你的个人一寸照片,使用彩色、灰度等方式读取图像,并显示出来,请截图你的代码和执行结果。

1.1彩色图像

#读取图像
img = cv.imread("lena.jpg",cv.IMREAD_REDUCED_COLOR_2)  #读取当前路径下的图像文件lena.jpg
cv.imshow("lena",img)        # 显示图像,窗口标题未:lena
cv.waitKey(0)                #等待用户输入
cv.destroyAllWindows()       #用户一旦输入任意键后,程序关闭窗口

1.2灰度图像

import cv2 as cv
import numpy as np

img = cv.imread("lena.jpg",cv.IMREAD_REDUCED_GRAYSCALE_4)  #读取当前路径下的图像文件lena.jpg
cv.imshow("lena",img)        # 显示图像,窗口标题未:lena
cv.waitKey(0)                #等待用户输入
cv.destroyAllWindows()       #用户一旦输入任意键后,程序关闭窗口

 

2、制作彩色图像

#制作BGR图像
Img = np.zeros((200,200,3),dtype=np.uint8)
while True:
    Img[50:150,50:150,1] = 255
    Img[0:50,:,2] = 255
    Img[150:200,:,2] = 255
    Img[50:150,0:50,2] = 255
    Img[50:150,150:200,2] = 255
    cv.imshow('Color',Img)
    key = cv.waitKey(1000)
    if key==27:
        break

 3、读取一个视频,以每秒25帧的速度播放出来

#读取视频
import time

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from cv2 import cv2 as cv

vc = cv.VideoCapture("D:/myvscode/text.mp4")
success,frame = vc.read()
fps = 25
size = (vc.get(cv.CAP_PROP_FRAME_HEIGHT),
        vc.get(cv.CAP_PROP_FRAME_WIDTH))
print('帧速率:',fps)
print('大小:',size)
cv.namedWindow("my video", cv.WINDOW_NORMAL)
while success:
    cv.imshow("my video",frame)
    key = cv.waitKey(40)
    if key == 27:
        break;
    success,frame = vc.read()

4、生成是一个视频,视频的大小为300*200像素(300行,200列),视频内容是一组动画。

#制作动画
import cv2 as cv
import numpy as np

img = np.zeros((300, 200),dtype = np.uint8)
cv.namedWindow("img1",cv.WINDOW_NORMAL)
for i in range(0,255,10):
    img[:,:]=0
    img[:,i:i+20]=255
    cv.imshow("img1",img)
    cv.waitKey(100)
cv.destroyAllWindows()

5、图像的位操作

        a) 图像可以进行按位运算,你将你自己的一寸照片与一副全白(R、G、B分量均为255)进行按位与、或、异或操作之后的结果是什么?

b) 图像可以进行按位运算,你将你自己的一寸照片与一副纯黑(R、G、B分量均为0)进行按位与、或、异或操作之后的结果是什么?

 

#图像位运算
import cv2 as cv
import numpy as np

# np.arange(d)

src1 = cv.imread('D:/myvscode/lena.jpg',cv.IMREAD_REDUCED_COLOR_2)           #读取图像
src2 = cv.imread('D:/myvscode/write.jpg',cv.IMREAD_REDUCED_COLOR_2)           #读取图像
img3 = cv.bitwise_and(src1,src2)    #按位与
img4 = cv.bitwise_or(src1,src2)     #按位或
img5 = cv.bitwise_not(src1)         #按位去反
img6 = cv.bitwise_xor(src1,src2)    #按位异或
cv.imshow('color_h',src1)           #显示原图像
cv.imshow('color_v',src2)           #显示原图像
cv.imshow('and',img3)               #显按位与图像
cv.imshow('or',img4)                #显示位或图像
cv.imshow('not',img5)               #显示取反图像
cv.imshow('xor',img6)               #显示位异或图像
cv.waitKey(0)
cv.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值