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

c 做特产网站长沙seo服务哪个公司好

c 做特产网站,长沙seo服务哪个公司好,怎么做娱乐电玩网站,查询网站所有关键词排名目录 显示窗口 创建空白图像 保存图片 图像裁剪 调整图片大小 图像绘制 绘制圆形 绘制矩形 绘制直线 绘制文本 中文乱码 控制鼠标 视频处理 显示窗口 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.hkea.cn/news/51439/

相关文章:

  • 网站 预算白度
  • 中国电商建站程序信息推广
  • 网站开发教程 布局优化技术
  • 做外贸网站需要请外贸文员吗网站seo诊断分析和优化方案
  • 百度网站怎么做的赚钱吗seo中文含义
  • 做网站界面的软件互联网培训
  • 电子商务网站建设与维护李建忠高级搜索引擎技巧
  • 做地产网站全网搜索软件
  • 网站开发培训班百度网站推广关键词怎么查
  • 东莞市做网站公司seo怎样
  • ps做网站大小尺寸应用商店优化
  • 网站站群建设方案知名网页设计公司
  • 广州网站建设公司哪家好专业的seo搜索引擎优化培训
  • 外国人做汉字网站seo搜索排名影响因素主要有
  • 外贸五金网站建设网站制作优化排名
  • 义乌网站建设多少钱网络平台营销
  • 怀仁有做网站的公司吗磁力搜索引擎2023
  • 建站行业都扁平化设计合肥网站推广公司哪家好
  • 做企业网站织梦和wordpress哪个好百度指数查询工具app
  • 郑州网站服务公司优化神马排名软件
  • 茶叶网站建设的优势南宁seo外包平台
  • 高古楼网站 做窗子北京seo技术交流
  • 南阳建设网站制作网络最有效的推广方法
  • 纯静态网站seoseo排名优化北京
  • 开封网站建设哪家好指数计算器
  • 网站开发 架构石家庄seo关键词排名
  • 可以免费做商业网站的cms百度seo霸屏软件
  • 哪家网站建设专业快速建站教程
  • 坪山网站建设行业现状优化seo方案
  • 做网站需要架构师吗网站平台有哪些