import cv2 import numpy as np image = cv2.imread("image.jpg") GrayImage=cv2.cvtColor(image ,cv2.COLOR_BGR2GRAY) # h, w = image.shape[:2] # h, w = map(int, [h/4, w/4]) # print(h,w) # # no flip # draw_0 = cv2.rectangle(image, (100, 100), (10, 10), (0, 0, 255))#cv2.rectangle(image, pt1,pt2, color) x, y, w, h =cv2.boundingRect(GrayImage) draw_1=cv2.rectangle(image, (x,y), (x+w,y+h), (0,255,0), 2) #参数:pt1,对角坐标1, pt2:对角坐标2 # 注意这里根据两个点pt1,pt2,确定了对角线的位置,进而确定了矩形的位置 #The function cv::rectangle draws a rectangle outline or a filled rectangle whose two opposite corners are pt1 and pt2. draw_0 = cv2.rectangle(image, (2*w, 2*h), (3*w, 3*h)) cv2.imshow("draw_0", draw_1)#显示画过矩形框的图片 cv2.waitKey(0) cv2.destroyWindow("draw_0")
时间: 2023-06-03 16:07:41 浏览: 126
这段代码使用了OpenCV库和NumPy库。首先通过cv2.imread函数读取了一张名为"image.jpg"的图片,然后利用cv2.cvtColor函数将其从彩色图像转换为灰度图像,并存储在GrayImage变量中。
相关问题
image=np.array(grayImage,dtype=float) percent=0.001 num=int(percent*image.shape[0]*image.shape[1]) for i in range(num): temp1=np.random.randint(image.shape[0]) temp2=np.random.randint(image.shape[1]) scale=150 noise=np.random.poisson(scale,1) image[temp1][temp2]+=noise out=image if out.min()<0: low_clip=-1. else: low_clip=0. out=np.clip(out,low_clip,255) expon_image=np.uint8(out) print(expon_image.shape) cv2.imshow("expon_image",expon_image) k=cv2.waitKey(0)优化这段代码的for循环
可以使用numpy的随机函数生成随机的坐标,然后使用numpy的切片和花式索引方式对图像进行操作,可以避免使用循环。
以下是优化后的代码:
```python
import numpy as np
import cv2
grayImage = cv2.imread('test.jpg', 0)
# 转换为浮点型
image = grayImage.astype(float)
percent = 0.001
num = int(percent * image.shape[0] * image.shape[1])
# 生成随机坐标
rand_x = np.random.randint(0, image.shape[0], num)
rand_y = np.random.randint(0, image.shape[1], num)
scale = 150
noise = np.random.poisson(scale, num)
# 对图像进行操作
image[rand_x, rand_y] += noise
# 调整像素值范围
out = np.clip(image, 0, 255)
# 转换为8位整型
expon_image = out.astype(np.uint8)
print(expon_image.shape)
cv2.imshow("expon_image", expon_image)
k = cv2.waitKey(0)
```
使用numpy的切片和花式索引方式,可以避免使用循环,提高代码的效率。同时,也需要注意对图像进行操作时,需要保证图像的类型一致,避免出现类型错误的问题。
阅读全文