此例子演示了将一个图像读入、然后画一个矩形框、然后把这个矩形框裁剪出来、然后把裁剪出来的图像保存下来、然后把裁剪出来的图像放大1.5倍、然后再放大后的图像上画几个点、然后把这几个点之间连上线、然后把绘制好了线条的图像再等比例缩小回去、然后把缩小回去的图像再贴到原来的图像上去。
import cv2 # 展示图像的函数 def show(img,name): print(name+" : "+str(img.shape)) cv2.imshow(name, img) cv2.waitKey(0) cv2.destroyAllWindows() # 读入图像 img = cv2.imread('../img2/cat2.jpg') # 在图像上画框 # img => 图片数据; # left_top => (最左,最上) 是个tuple; # right_bottom => [最右,最下] 是个tuple; # (0, 0, 255) => rgb 颜色; # 2 => 粗细程度 left_top = [300,400] right_bottom = [1000,800] cv2.rectangle(img,left_top,right_bottom,(0,0,255),2) show(img,"cat") # 裁剪图像 # 0:400是说高度边界 0:800是说宽度边界 img_cj = img[400:800,300:1000] # 保存图像 cv2.imwrite('../img2/cat_cj.jpg',img_cj) show(img_cj,"cat_cj") # 缩放:放大 # None是输出图像的尺寸大小,fx和fy是缩放因子 # cv2.INTER_CUBIC 是插值方法,一般默认为cv2.INTER_LINEAR temp = 3/2 img_sf1 = cv2.resize(img_cj,None,fx=temp,fy=temp,interpolation=cv2.INTER_CUBIC) show(img_sf1,"img_sf1") # 绘制线条 # 绘制点 cv2.circle(image, center_coordinates, radius, color, thickness) # image:它是要在其上绘制圆的图像。 # center_coordinates:它是圆的中心坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。 # radius:它是圆的半径。 # color:它是要绘制的圆的边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。 # thickness:它是圆边界线的粗细像素。厚度-1像素将以指定的颜色填充矩形形状。 point_list = [(100, 100), (170, 120), (100, 140), (180, 150),(200, 165)] for point in point_list: cv2.circle(img_sf1, point, 3, (255, 0, 0), 2) # 这里我写了五个点 存在point_list里 下标是0 1 2 3 4 # 那么连线的话 需要指定连线的起始点 这里我们让0和1 1和2 2和3 3和4 line_maps = {0:1,1:2,2:3,3:4} # cv2.line(image, start_point, end_point, color, thickness) # image:它是要在其上绘制线条的图像。 # start_point:它是线的起始坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。 # end_point:它是直线的终点坐标。坐标表示为两个值的元组,即(X坐标值ÿ坐标值)。 # color:它是要绘制的线条的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。 # thickness:它是线的粗细像素。 for i in line_maps.keys(): start_point = point_list[i] # 起始点 end_point = point_list[line_maps[i]] # 终点 cv2.line(img_sf1,start_point,end_point,(0,255,0),2) # 连线 show(img_sf1,"img_line") # 缩放:缩小 temp = 2/3 img_sf2 = cv2.resize(img_sf1,None,fx=temp,fy=temp,interpolation=cv2.INTER_CUBIC) show(img_sf2,"img_sf2") # 再将缩小后的图片 拼接回原来的图像上 img[400:800,300:1000] = img_sf2 show(img,"img_result")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)