python cv.rectangle 缺_Python实现Opencv图片画rectangle

本文介绍了一个使用Python的OpenCV库在图片上画矩形的简单程序。通过监听鼠标事件,实现了点击开始点,拖动鼠标绘制矩形,释放鼠标完成矩形的功能。代码中使用了`cv2.cv`模块,并通过`cv.Rectangle`函数来绘制矩形。
摘要由CSDN通过智能技术生成

今天配置了下Eclipse下的Python,做了个Opencv在图片上画rectangle的小程序:

Python还不太熟悉,感觉变量用的还是不适应,之后看下有没有更好点的方式

最开始用的cv2实现的,但是没找到类似cvCopy的函数,非常囧,后来改成用cv实现

import cv2.cv as cv

global startPointx

global startPointy

global flagDraw

startPointx = 0

startPointy = 0

flagDraw = False

if __name__ == '__main__':

image = cv.LoadImage("E:/lena.jpg",cv.CV_LOAD_IMAGE_COLOR)

imgc = cv.CreateImage((image.width,image.height), 8, 3)

cv.Copy(image, imgc)

def onMouseEvent(event,x,y,flags,param):

global startPointx

global startPointy

global flagDraw

#鼠标左键按下响应

if(event==1):

print "Position is: %d,%d" ,x,y

startPointx = x

startPointy = y

flagDraw = True

#鼠标移动响应

if(event==0):

if(flagDraw==True):

cv.Rectangle(imgc, (startPointx,startPointy), (x,y), (255,0,0),3)

cv.ShowImage('rectangle', imgc)

cv.Copy(image, imgc)

print "EndPosition is: %d,%d" ,x,y

#鼠标左键抬起响应

if(event==4):

if(flagDraw==True):

cv.Rectangle(image, (startPointx,startPointy), (x,y), (255,0,0),3)

cv.ShowImage('rectangle', image)

flagDraw = False

cv.ShowImage('rectangle', imgc)

while True:

cv.SetMouseCallback('rectangle', onMouseEvent)

c = cv.WaitKey()

if c == 27 or c == ord('q'):

break

cv.DestroyAllWindows()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`cv2.rectangle()`是OpenCV中用于绘制矩形的函数。它可以在图像上绘制一个矩形,可以指定矩形的左上角和右下角坐标,线条颜色和线条宽度等参数。下面是一个简单的例子: ```python import cv2 import numpy as np # 创建一个黑色的图像 img = np.zeros((512,512,3), np.uint8) # 绘制一个矩形 cv2.rectangle(img,(384,0),(510,128),(0,255,0),3) # 显示图像 cv2.imshow('rectangle',img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这个例子创建了一个黑色的图像,然后在图像上绘制了一个矩形,左上角坐标为(384,0),右下角坐标为(510,128),线条颜色为绿色,线条宽度为3。 `cv2.rectangle()`函数的完整语法如下: ```python cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) ``` 其中,参数含义如下: - `img`:要绘制矩形的图像。 - `pt1`:矩形的左上角坐标。 - `pt2`:矩形的右下角坐标。 - `color`:矩形的颜色,可以是RGB元组或灰度值。 - `thickness`:矩形边框的线条宽度,如果为负数,则表示填充整个矩形。 - `lineType`:线条类型,可以是8、4或CV_AA等。 - `shift`:坐标点小数点位数。 如果要绘制一个半透明的矩形,可以使用`cv2.addWeighted()`函数。下面是一个例子: ```python import cv2 import numpy as np # 读取一张图片 img = cv2.imread('test.jpg') # 绘制一个半透明的矩形 overlay = img.copy() cv2.rectangle(overlay, (100, 100), (300, 300), (0, 0, 255), -1) alpha = 0.5 cv2.addWeighted(overlay, alpha, img, 1 - alpha, 0, img) # 显示图像 cv2.imshow('rectangle',img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这个例子读取了一张图片,然后在图片上绘制了一个左上角坐标为(100,100),右下角坐标为(300,300),颜色为红色的矩形,并将矩形设置为半透明。最后使用`cv2.addWeighted()`函数将矩形叠加到原始图片上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值