45、编写一个程序,添加轨迹条滑块控件,让用户可以动态地将金字塔下采样缩减级别在2到8的因子范围内进行更改,无需将结果写入磁盘,但要显示结果。
需添加轨迹条滑块控件,实现动态调整金字塔下采样缩减级别在2到8之间,并显示结果。
46、紧凑矩阵和向量模板类型:a. 分别使用 cv::Mat<> 和 cv::Vec<> 模板创建一个 3×3 矩阵和一个 3 行向量。b. 能否直接将它们相乘?如果不能,原因是什么?c. 尝试使用 cv::Mat<> 模板将向量对象类型转换为 3×1 矩阵。现在会发生什么?
- a. 使用相应模板可按其构造函数规则创建 3×3 矩阵和 3 行向量;
- b. 通常不能直接相乘,因为矩阵乘法要求前一个矩阵的列数等于后一个矩阵的行数,3 行向量与 3×3 矩阵维度不匹配;
- c. 将向量类型转换为 3×1 矩阵后,若满足矩阵乘法规则可进行相乘运算。
47、创建一个 ASCII 数字打字机,你可以在电脑中输入数字,这些数字将显示在一个高 20 像素、宽 10 像素的方块中。当你输入时,数字将从左到右显示,直到到达图像末尾,然后停止。
要实现这个功能,可使用 Python 和 OpenCV 库,以下是示例代码:
import cv2
import numpy as np
# 创建一个空白图像
image_height = 20
image_width = 10 * 10 # 假设最多显示 10 个数字
image = np.zeros((image_height, image_width), dtype=np.uint8)
# 初始化当前位置
current_x = 0
# 定义数字的 ASCII 字符集
numbers = '0123456789'
# 定义键盘事件处理函数
def on_key_press(key):
global current_x
if chr(key) in numbers and current_x < image_width - 10:
# 获取数字字符
digit = chr(key)
# 创建一个小图像来绘制数字
digit_image = np.zeros((20, 10), dtype=np.uint8)
# 在小图像上绘制数字
cv2.putText(digit_image, digit, (0, 15), cv2.FONT_HERSHEY_SIMPLEX, 0.6, 255, 2)
# 将小图像复制到主图像的当前位置
image[:, current_x:current_x + 10] = digit_image
# 更新当前位置
current_x += 10
# 创建窗口并显示图像
cv2.namedWindow('ASCII Numeric Typewriter')
while True:
cv2.imshow('ASCII Numeric Typewriter', image)
key = cv2.waitKey(1) & 0xFF
if key == 27: # 按 ESC 键退出
break
elif key >= 48 and key <= 57: # 处理数字键
on_key_press(key)
# 关闭窗口
cv2.destroyAllWindows()
这段代码创建了一个空白图像,并允许用户通过键盘输入数字。数字将从左到右显示在图像中,直到达到图像的末尾。
48、对一张图像使用多个头文件。加载一张尺寸至少为100×100的图像。创建两个额外的感兴趣区域(ROI),其宽度为20,高度为30。它们的原点分别位于(5, 10)和(50, 60)。将这些新的图像子区域传递给cv::bitwise_not()函数。显示加载的图像,该图像应在较大的图像内有两个反转的矩形。
以下为实现该功能的大致步骤:
- 加载一张尺寸至少为100×100的图像;
- 创建两个宽度为20、高度为30,原点分别位于(5, 10)和(50, 60)的ROI;
- 将这两个ROI传递给
cv::bitwise_not()函数进行反转操作; - 显示加载的图像,此时图像内会有两个反转的矩形。
49、绘图实践:加载或创建并显示一幅彩色图像。绘制OpenCV能绘制的每种形状和线条的一个示例。
以下是一个使用OpenCV绘制各种形状和线条的Python示例代码:
import cv2
import numpy as np
# 创建一个空白的彩色图像
image = np.zeros((500, 500, 3), dtype=np.uint8)
# 绘制直线
cv2.line(image, (50, 50), (200, 50), (0, 255, 0), 2)
# 绘制矩形
cv2.rectangle(image, (250, 50), (400, 200), (0, 0, 255), 2)
# 绘制圆形
cv2.circle(image, (125, 250), 75, (255, 0, 0), 2)
# 绘制椭圆
cv2.ellipse(image

最低0.47元/天 解锁文章
881

被折叠的 条评论
为什么被折叠?



