triangle_cnt2 = np.array([triange_P2, center, triange_P3]) mask_triange = np.zeros_like(imgL) mask_triange = cv2.drawContours( mask_triange, [triangle_cnt2.astype(int)], 0, 255, -1) img_triange2 = cv2.copyTo(imgL, mask_triange)
时间: 2024-03-31 21:32:53 浏览: 26
这段代码与前一段代码几乎相同,只是用triange_P2和triange_P3构建了不同的三角形轮廓triangle_cnt2,并在mask_triange中绘制了该轮廓,得到一个只包含另一个三角形区域的二值图像img_triange2。
具体来说,代码的执行步骤如下:
1.使用np.array函数将三角形顶点和圆心坐标组成一个三角形轮廓triangle_cnt2;
2.创建一个与imgL大小相同的、像素值全为0的二值图像mask_triange;
3.使用cv2.drawContours函数在mask_triange中绘制三角形轮廓,绘制颜色为255,厚度为-1,得到一个只包含三角形区域的二值图像;
4.使用cv2.copyTo函数将imgL中三角形区域以外的部分置为0,得到一个只包含三角形区域的二值图像img_triange2。
相关问题
triangle_cnt1 = np.array([triange_P1, center, triange_P2]) mask_triange = np.zeros_like(imgL) mask_triange = cv2.drawContours( mask_triange, [triangle_cnt1.astype(int)], 0, 255, -1) img_triange1 = cv2.copyTo(imgL, mask_triange)
这段代码利用前面求得的三角形顶点和圆心坐标,构建一个三角形轮廓,并将其绘制在一个新的二值图像mask_triange中。接着,使用cv2.copyTo函数将原始图像imgL中三角形区域以外的部分置为0,得到一个只包含三角形区域的二值图像img_triange1。
具体来说,代码的执行步骤如下:
1.使用np.array函数将三角形顶点和圆心坐标组成一个三角形轮廓triangle_cnt1;
2.创建一个与imgL大小相同的、像素值全为0的二值图像mask_triange;
3.使用cv2.drawContours函数在mask_triange中绘制三角形轮廓,绘制颜色为255,厚度为-1,得到一个只包含三角形区域的二值图像;
4.使用cv2.copyTo函数将imgL中三角形区域以外的部分置为0,得到一个只包含三角形区域的二值图像img_triange1。
area1 = len(np.where(img_triange1 == 255)[0]) if area1 < 0.25*areaL or area1 > 0.75*areaL: triangle_cnt1 = np.array([triange_P1, center, triange_P3]) mask_triange = np.zeros_like(imgL) mask_triange = cv2.drawContours( mask_triange, [triangle_cnt1.astype(int)], 0, 255, -1) img_triange1 = cv2.copyTo(imgL, mask_triange) else: area2 = len(np.where(img_triange2 == 255)[0]) if area2 < 0.25*areaL or area2 > 0.75*areaL: triangle_cnt2 = np.array([triange_P1, center, triange_P3]) mask_triange = np.zeros_like(imgL) mask_triange = cv2.drawContours( mask_triange, [triangle_cnt2.astype(int)], 0, 255, -1) img_triange2 = cv2.copyTo(imgL, mask_triange)
这段代码根据前面计算得到的两个三角形区域的面积,判断哪个区域是有效的三角形区域。如果其中一个区域的面积小于原始区域面积的25%或大于原始区域面积的75%,则将另一个区域作为有效的三角形区域,并用相应的三角形轮廓重新生成对应的二值图像。
具体来说,代码的执行步骤如下:
1.使用len和np.where函数计算img_triange1中像素值为255的像素点数量,得到img_triange1的面积area1;
2.如果area1小于原始区域面积的25%或大于原始区域面积的75%,则将另一个三角形轮廓triangle_cnt1重新设置为triange_P1、center、triange_P3,并在mask_triange中绘制该轮廓,得到一个新的只包含三角形区域的二值图像img_triange1;
3.如果area1有效,则使用len和np.where函数计算img_triange2中像素值为255的像素点数量,得到img_triange2的面积area2;
4.如果area2小于原始区域面积的25%或大于原始区域面积的75%,则将另一个三角形轮廓triangle_cnt2重新设置为triange_P1、center、triange_P3,并在mask_triange中绘制该轮廓,得到一个新的只包含三角形区域的二值图像img_triange2。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)