当前位置: 首页 > news >正文

邢台网站建设与制作全球疫情今天最新消息

邢台网站建设与制作,全球疫情今天最新消息,设计托管网站建设,凉山州建设厅官方网站目录 显示窗口 创建空白图像 保存图片 图像裁剪 调整图片大小 图像绘制 绘制圆形 绘制矩形 绘制直线 绘制文本 中文乱码 控制鼠标 视频处理 显示窗口 cv2.namedWindow(winname, flagsNone) 创建一个命名窗口,以便在该窗口中显示图像或进行其他图形操作…

目录

显示窗口

创建空白图像

保存图片

图像裁剪

调整图片大小

图像绘制

绘制圆形

绘制矩形

绘制直线

绘制文本

中文乱码

控制鼠标

视频处理


显示窗口

cv2.namedWindow(winname, flags=None)

创建一个命名窗口,以便在该窗口中显示图像或进行其他图形操作。

参数说明

  • winname (str): 窗口的名称。这个名称必须是唯一的,因为它是用来标识窗口的。

  • flags (int, 可选): 窗口的标志,用于设置窗口的行为。默认值为cv2.WINDOW_AUTOSIZE

    flags 常见的标志包括:

    • cv2.WINDOW_NORMAL: 允许调整窗口大小。

    • cv2.WINDOW_AUTOSIZE: 窗口大小根据图像大小自动调整,不能手动调整。

# 创建一个名为 "IMG" 的窗口,cv2.WINDOW_NORMAL设置允许调整大小
cv2.namedWindow('IMG', cv2.WINDOW_NORMAL)
# 2 设置名字和窗口大小(width,height)
cv2.resizeWindow('IMG', (500, 300))
# 读取图片
# 1.支持相对路径和绝对路径,2.图片路径不能包含中文
try:img = cv2.imread('pic/test1.jpg')# 显示图像cv2.imshow('IMG', img)# 等待用户按键cv2.waitKey(0)# 释放资源cv2.destroyAllWindows()except Exception as e:print(e)print("图片不存在")

创建空白图像

np.zeros((height, width, 3))

创建一个全零数组,这个数组可以表示一个空白图像。数组的形状应该符合图像的尺寸和通道数,例如,对于 RGB 图像,形状应为 (height, width, 3)

image = np.zeros((300, 500, 3), dtype=np.uint8)
cv2.imshow('img',image)
cv2.waitKey(0)

保存图片

cv2.imwrite(filename, img[, params])

用于将图像保存到文件中。

参数说明

  • filename (str): 要保存的文件路径和名称。支持的文件格式包括 .jpg, .png, .bmp, .tiff 等。

  • img (numpy.ndarray): 要保存的图像。通常是一个二维或三维的 NumPy 数组,表示图像的像素值。

返回值

  • bool: 成功保存图像返回 True,否则返回 False

import cv2# 读取图片
img = cv2.imread("images/car.png")
# 保存图片
rs = cv2.imwrite("save_image/car.png", img)
if rs:print("图像保存成功!")
else:print("图像保存失败!")

注意:

确保提供的文件路径是有效的,如果路径不存在,OpenCV 会尝试创建它,但如果权限不足则会保存失败。

图像裁剪

img[y:y+h, x:x+w]

在 OpenCV 中,图像切片用于从图像中提取一个子区域(矩形区域)。比如在目标检测、ROI(Region of Interest,感兴趣区域)提取等任务有用。

说明:

图像 img,类型: numpy.ndarray

  • x: 子区域左上角的 x 坐标。

  • y: 子区域左上角的 y 坐标。

  • w: 子区域的宽度。

  • h: 子区域的高度。

img = cv2.imread('pic/test2.png')# 定义坐标
x=100
y=150
w=150
h=100sub_img =img[y:y+h,x:x+w]
cv2.imshow("sub_img",sub_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意:

  • 边界检查:确保 (x, y)(x+w, y+h) 都在图像的边界内,否则会导致数组索引越界错误。

  • 数据类型img 通常是 numpy.ndarray 类型,切片操作返回的也是 numpy.ndarray 类型。

调整图片大小

cv2.resize(src, dsize, dst)

用于调整图像的大小,对图像进行缩放、放大或缩小以适应不同需求。

参数说明

  • src (numpy.ndarray): 输入图像,通常是一个二维或三维的 NumPy 数组。

  • dsize (tuple): 输出图像的尺寸,是一个二元组 (width, height)

返回值

  • dst (numpy.ndarray): 缩放后的图像。

import cv2img = cv2.imread("images/car.png")
#获取图片的像素和通道数
height, width, channels = img.shape
print(f"高度:{height},宽度:{width},通道数:{channels}")
#调整图片的大小
img = cv2.resize(img, (300, 300))
height, width, channels = img.shape
print(f"调整后:高度:{height},宽度:{width},通道数:{channels}")
#保存图片
cv2.imwrite("save_image/car.png", img)

图像绘制

绘制圆形

cv2.circle(img, center, radius, color, thickness)

参数:

  • img:要绘制圆形的图像。

  • center:圆心的坐标。

  • radius:圆的半径。

  • color:圆的颜色,通常是一个表示BGR颜色的元组,例如(255, 0, 0)表示蓝色。

  • thickness:圆的边界线条的厚度,如果为负值或cv2.FILLED,表示填充整个圆。

img = cv2.imread('pic/test2.png')center = (150, 150)
radius = 100
color = (158, 56, 200)
thickness = 25
circle_img = cv2.circle(img, center, radius, color, thickness)
cv2.imshow("circle_img", circle_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

绘制矩形

 cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])

参数:

  • img:要绘制矩形的图像。

  • pt1:矩形的一个顶点。

  • pt2:矩形对角线上的另一个顶点。

  • color:矩形的颜色,通常是一个表示BGR颜色的元组,例如(255, 0, 0)表示蓝色。

  • thickness:矩形边框的厚度,如果为负值或cv2.FILLED,表示填充整个矩形内部。

img = cv2.imread('pic/test.jpg')left_top = (100,100)
right_bottom = (300,400)
color = (151,48,12)
thickness=10
img_rectangle = cv2.rectangle(img,[100,200,300,400],color,thickness)
cv2.imshow("img_rectangle", img_rectangle)
cv2.waitKey(0)
cv2.destroyAllWindows()

绘制直线

cv2.line(img, pt1, pt2, color, thickness lineType)

参数:

  • img: 输出图像,即要在这张图上绘制直线的图像。通常是一个 NumPy 数组。

  • pt1: 直线的一个端点,是一个包含两个元素(x, y)的元组,代表该点的坐标。

  • pt2: 直线的另一个端点,也是一个包含两个元素(x, y)的元组,代表该点的坐标。

  • color: 直线的颜色,对于 BGR 图像,这应该是一个包含三个整数的元组,分别对应蓝色、绿色和红色的强度(例如 (255, 0, 0) 表示纯蓝色)。对于灰度图像,只需要一个整数值即可。

  • thickness: 可选参数,定义直线的宽度。默认值是 1。

返回值

  • img: 返回的是经过修改后的图像,实际上就是传入的图像本身,因为 cv2.line() 是直接在原图上操作的。

import cv2img = cv2.imread("images/car.png")# 定义直线的起点和终点
start_point = (50, 50)  # 起点坐标 (x1, y1)
end_point = (450, 450)  # 终点坐标 (x2, y2)# 定义颜色 (B, G, R) 和线条粗细
color = (255, 0, 0)  # 蓝色
thickness = 2  # 线条的宽度# 使用 cv2.line() 在图像上绘制直线
cv2.line(img, start_point, end_point, color, thickness)# 显示图像
cv2.imshow('Image with Line', img)# 等待按键,然后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

绘制文本

cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])

用于在图像上添加文本。用于标注图像、显示信息或调试时。

参数:

  • img (numpy.ndarray): 输入图像,通常是一个二维或三维的 NumPy 数组。

  • text (str): 要添加的文本字符串。

  • org (tuple): 文本的起始位置,是一个二元组 (x, y),表示文本左下角的坐标。

  • fontFace

    (int): 字体类型,常见的字体类型包括:

    • cv2.FONT_HERSHEY_SIMPLEX: 正常大小的无衬线字体

    • cv2.FONT_HERSHEY_PLAIN: 小号的无衬线字体

    • cv2.FONT_HERSHEY_DUPLEX: 正常大小的无衬线字体,比 FONT_HERSHEY_SIMPLEX 更粗

    • cv2.FONT_HERSHEY_COMPLEX: 正常大小的有衬线字体

    • cv2.FONT_HERSHEY_TRIPLEX: 正常大小的有衬线字体,比 FONT_HERSHEY_COMPLEX 更粗

    • cv2.FONT_HERSHEY_SCRIPT_SIMPLEX: 手写风格的字体

    • cv2.FONT_HERSHEY_SCRIPT_COMPLEX: 手写风格的字体,比 FONT_HERSHEY_SCRIPT_SIMPLEX 更粗

    • cv2.FONT_ITALIC: 斜体修饰符,可以与其他字体类型组合使用

  • fontScale (float): 字体大小的比例因子。

  • color (tuple): 文本颜色,是一个三元组 (B, G, R),表示蓝色、绿色和红色的值。

  • thickness (int, 可选): 文本线条的厚度,默认值为 1。

  • lineType

    (int, 可选): 线条类型,常见的线条类型包括:

    • cv2.LINE_4: 4 连通线

    • cv2.LINE_8: 8 连通线

    • cv2.LINE_AA: 抗锯齿线(默认值)

返回值

  • img (numpy.ndarray): 添加文本后的图像。

import cv2
import numpy as npimage = cv2.imread("images/car.png")# 定义文本内容和位置
text = "hello world!"
# 文本的左下角位置
position = (50, 200)
# 设置字体类型
font = cv2.FONT_HERSHEY_SIMPLEX
#字体大小
font_scale = 1
#字体颜色
font_color = (0, 255, 0)  
#字体线条的粗细
line_type = 2# 在图像上绘制文本
cv2.putText(image, text, position, font, font_scale, font_color, line_type)
# 显示图像
cv2.imshow(' Text', image)
cv2.waitKey(0)
cv2.destroyAllWindows()# 保存图像(可选)
cv2.imwrite('output_image.png', image)

中文乱码

(1)安装库:

pip install opencv-python pillow

(2)下载一个中文字体文件,常见的中文字体文件有 simhei.ttfsimsun.ttc 等。你可以从系统中找到这些字体文件,或者从互联网下载。

(3)定义 put_text 函数

示例:

def put_text(image, text, position, font_path, font_size, color):# 将Opencv图像转换为PIL图像pil_image = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))# 创建一个在给定图像绘图的对象draw = ImageDraw.Draw(pil_image)# 加载字体font = ImageFont.truetype(font_path, font_size)# 在图像上绘制文字draw.text(position, text, fill=color, font=font)# 将PIL图像转回Opencv图像image_with_text = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)return image_with_textdef show(even, x, y, flag, param):global img2global numif even == cv2.EVENT_LBUTTONDOWN:num += 1text1 = f'老铁们,上火箭,火箭数:{num}'img2 = put_text(img, text1, (10, 10), 'simhei.ttf',20, (225, 241, 14))img = cv2.imread('pic/test.jpg')
img2 =img
# 火箭数
num = 0win_name = 'IMG'
cv2.namedWindow(win_name)
cv2.setMouseCallback(win_name, show)
while True:cv2.imshow(win_name, img2 )if cv2.waitKey(1) == 27:break
cv2.destroyAllWindows()

控制鼠标

cv2.setMouseCallback()

允许用户定义一个回调函数,当鼠标事件发生时(如点击、释放、移动等),该回调函数会被调用。

def act(even, x, y, flag, param):global condif even == cv2.EVENT_LBUTTONDOWN:print("鼠标左键按下")cond = Trueelif even == cv2.EVENT_LBUTTONUP:print("鼠标左键释放")cond = Falseelif even == cv2.EVENT_MOUSEMOVE:print("鼠标移动")if cond:cv2.circle(img, (x, y), 5, (150, 125, 205), -1)else:print("无法识别")img = cv2.imread('pic/test.jpg')win_name = 'IMG'
cv2.namedWindow(win_name, cv2.WINDOW_NORMAL)
cv2.resizeWindow(win_name, (500, 400))
# 活动信号
cond = False
cv2.setMouseCallback(win_name, act)while True:cv2.imshow(win_name, img)if cv2.waitKey(10) == 27:cv2.imwrite('save_img.jpg', img)break
cv2.destroyAllWindows()

视频处理

cv2.VideoCapture()

是 OpenCV 库中的一个类,用于从摄像头或视频文件中捕获视频帧。这个类提供了多种方法来控制视频捕获的过程,包括打开视频文件、读取视频帧、获取视频属性等。

常用方法

(1)read()

用于从视频源中读取下一帧。它返回一个布尔值和图像帧。布尔值表示是否成功读取了帧,图像帧是一个 NumPy 数组。

ret, frame = cap.read()
if not ret:print("Failed to grab frame")break

(2)release()

用于释放视频捕获资源。在完成视频处理后,必须调用此方法来释放摄像头或视频文件。

cap.release()

(3)isOpened()

用于检查视频捕获对象是否已经成功打开。

if not cap.isOpened():print("Error opening video stream or file")

(4)get()set()

get()set() 方法用于获取和设置视频捕获属性。常用的属性包括帧宽、帧高、帧率等。

# 获取帧宽
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)# 获取帧高
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)# 获取帧率
fps = cap.get(cv2.CAP_PROP_FPS)# 设置帧宽
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)# 设置帧高
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

 示例:

import cv2# 打开视频文件或摄像头
# 使用 0 打开默认摄像头,或者替换为视频文件路径,例如 'video.mp4'
video_capture = cv2.VideoCapture('video/1.mp4')  # 0 表示使用摄像头
if not video_capture.isOpened():print("视频没有打开")exit()
# 获取视频的帧率
fps = video_capture.get(cv2.CAP_PROP_FPS)
delay = int(1000 / fps)  # 计算帧间延迟
while True:# 逐帧读取视频ret, frame = video_capture.read()# 显示当前帧cv2.imshow('Video', frame)# 按下 'q' 键退出if cv2.waitKey(delay) & 0xFF == ord('q'):break
# 释放视频捕获对象和关闭所有窗口
video_capture.release()
cv2.destroyAllWindows()

http://www.hrbkazy.com/news/46565.html

相关文章:

  • 纯静态网站 后台电商具体是做什么的
  • 河间专业做网站电话长春网站优化平台
  • 网站推广的心得关键词挖掘查询工具
  • 重庆 网站 建设 公司网站开发工具
  • 东莞网站建设aj博客平台推广公众平台营销
  • 怎么找人做淘宝网站吗软媒win7优化大师
  • 做网站怎么导入源码网络营销产品策略
  • 郑州app开发网站建设从哪里找网络推广公司
  • 中华人民共和国城乡住房建设部网站英文谷歌优化
  • 中国住房城乡建设厅网站首页百度云盘网页登录入口
  • b2c商城网站厦门网站seo哪家好
  • 东莞php网站建设网站优化软件
  • 肇庆网站建设方案优化网站推广联盟
  • 做棋牌网站的步骤常见的网络营销方式
  • 做网站需要什么知识seo教程搜索引擎优化
  • 自己怎么做VIP视频解网站今日新闻最新
  • 顺德网站建设jinqiye护肤品营销策划方案
  • b2b独立站建站2024年的新闻时事热点论文
  • 南乐网站建设电话最新网络营销方式
  • 北京seo代理公司seo基础入门免费教程
  • 做网站 信科网站建设便宜免费刷推广链接的网站
  • 网站优化哪家好晚上免费b站软件
  • 十堰秦楚网 十堰新闻门户网站网店如何引流与推广
  • 网站建设mrd文档模板惠州seo推广外包
  • app应用网站源码深圳网络营销策划有限公司
  • 南京做网站询南京乐识怎么做网站教程
  • 优惠券网站开发哪家好自己怎么做网站推广
  • 网站建设费用推荐网络专业手机网站模板建站
  • 公司门户网站怎么做外贸网站制作公司
  • 朝阳网站建设公司搜索竞价