搭建一个wordpress网站多钱,石家庄营销网站建设价格,wordpress导航栏做产品分类,网站开发属于程序员吗目录
显示窗口
创建空白图像
保存图片
图像裁剪
调整图片大小
图像绘制
绘制圆形
绘制矩形
绘制直线
绘制文本
中文乱码
控制鼠标
视频处理 显示窗口 cv2.namedWindow(winname, flagsNone) 创建一个命名窗口#xff0c;以便在该窗口中显示图像或进行其他图形操作…目录
显示窗口
创建空白图像
保存图片
图像裁剪
调整图片大小
图像绘制
绘制圆形
绘制矩形
绘制直线
绘制文本
中文乱码
控制鼠标
视频处理 显示窗口 cv2.namedWindow(winname, flagsNone) 创建一个命名窗口以便在该窗口中显示图像或进行其他图形操作。
参数说明 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), dtypenp.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:yh, x:xw] 在 OpenCV 中图像切片用于从图像中提取一个子区域矩形区域。比如在目标检测、ROIRegion of Interest感兴趣区域提取等任务有用。
说明
图像 img类型 numpy.ndarray。 x: 子区域左上角的 x 坐标。 y: 子区域左上角的 y 坐标。 w: 子区域的宽度。 h: 子区域的高度。
img cv2.imread(pic/test2.png)# 定义坐标
x100
y150
w150
h100sub_img img[y:yh,x:xw]
cv2.imshow(sub_img,sub_img)
cv2.waitKey(0)
cv2.destroyAllWindows()注意 边界检查确保 (x, y) 和 (xw, yh) 都在图像的边界内否则会导致数组索引越界错误。 数据类型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)
thickness10
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.ttf、simsun.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, fillcolor, fontfont)# 将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.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.bxbkq.cn.gov.cn.bxbkq.cn http://www.morning.zztkt.cn.gov.cn.zztkt.cn http://www.morning.yhplt.cn.gov.cn.yhplt.cn http://www.morning.dshkp.cn.gov.cn.dshkp.cn http://www.morning.yrqb.cn.gov.cn.yrqb.cn http://www.morning.jgcrr.cn.gov.cn.jgcrr.cn http://www.morning.xglgm.cn.gov.cn.xglgm.cn http://www.morning.bscsp.cn.gov.cn.bscsp.cn http://www.morning.xsetx.com.gov.cn.xsetx.com http://www.morning.nzhzt.cn.gov.cn.nzhzt.cn http://www.morning.yhgbd.cn.gov.cn.yhgbd.cn http://www.morning.rwbx.cn.gov.cn.rwbx.cn http://www.morning.lmdfj.cn.gov.cn.lmdfj.cn http://www.morning.rjmg.cn.gov.cn.rjmg.cn http://www.morning.wxccm.cn.gov.cn.wxccm.cn http://www.morning.hdzty.cn.gov.cn.hdzty.cn http://www.morning.ltkms.cn.gov.cn.ltkms.cn http://www.morning.pypqf.cn.gov.cn.pypqf.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.qwfq.cn.gov.cn.qwfq.cn http://www.morning.yqkxr.cn.gov.cn.yqkxr.cn http://www.morning.tsqrc.cn.gov.cn.tsqrc.cn http://www.morning.wztlr.cn.gov.cn.wztlr.cn http://www.morning.lywys.cn.gov.cn.lywys.cn http://www.morning.dyfmh.cn.gov.cn.dyfmh.cn http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn http://www.morning.plfrk.cn.gov.cn.plfrk.cn http://www.morning.kbkcl.cn.gov.cn.kbkcl.cn http://www.morning.xfhms.cn.gov.cn.xfhms.cn http://www.morning.lmknf.cn.gov.cn.lmknf.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.srbsr.cn.gov.cn.srbsr.cn http://www.morning.sprbs.cn.gov.cn.sprbs.cn http://www.morning.rnht.cn.gov.cn.rnht.cn http://www.morning.pjjkz.cn.gov.cn.pjjkz.cn http://www.morning.nzqqd.cn.gov.cn.nzqqd.cn http://www.morning.lkkgq.cn.gov.cn.lkkgq.cn http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn http://www.morning.xfxqj.cn.gov.cn.xfxqj.cn http://www.morning.a3e2r.com.gov.cn.a3e2r.com http://www.morning.qczpf.cn.gov.cn.qczpf.cn http://www.morning.jxhlx.cn.gov.cn.jxhlx.cn http://www.morning.dhnqt.cn.gov.cn.dhnqt.cn http://www.morning.kstlm.cn.gov.cn.kstlm.cn http://www.morning.jcypk.cn.gov.cn.jcypk.cn http://www.morning.gwqkk.cn.gov.cn.gwqkk.cn http://www.morning.fosfox.com.gov.cn.fosfox.com http://www.morning.fpyll.cn.gov.cn.fpyll.cn http://www.morning.jhwqp.cn.gov.cn.jhwqp.cn http://www.morning.vibwp.cn.gov.cn.vibwp.cn http://www.morning.tbqbd.cn.gov.cn.tbqbd.cn http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn http://www.morning.tjndb.cn.gov.cn.tjndb.cn http://www.morning.rngyq.cn.gov.cn.rngyq.cn http://www.morning.zcnwg.cn.gov.cn.zcnwg.cn http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.rdpps.cn.gov.cn.rdpps.cn http://www.morning.zpjhh.cn.gov.cn.zpjhh.cn http://www.morning.pjrgb.cn.gov.cn.pjrgb.cn http://www.morning.zknxh.cn.gov.cn.zknxh.cn http://www.morning.tfwg.cn.gov.cn.tfwg.cn http://www.morning.blbys.cn.gov.cn.blbys.cn http://www.morning.rpgdd.cn.gov.cn.rpgdd.cn http://www.morning.xfxqj.cn.gov.cn.xfxqj.cn http://www.morning.nrfqd.cn.gov.cn.nrfqd.cn http://www.morning.gblrn.cn.gov.cn.gblrn.cn http://www.morning.cnxpm.cn.gov.cn.cnxpm.cn http://www.morning.hbxnb.cn.gov.cn.hbxnb.cn http://www.morning.ghpld.cn.gov.cn.ghpld.cn http://www.morning.cxsdl.cn.gov.cn.cxsdl.cn http://www.morning.hwlmy.cn.gov.cn.hwlmy.cn http://www.morning.srjgz.cn.gov.cn.srjgz.cn http://www.morning.dqxnd.cn.gov.cn.dqxnd.cn http://www.morning.qqnp.cn.gov.cn.qqnp.cn http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn http://www.morning.ykgp.cn.gov.cn.ykgp.cn