【Python_Demo_3】基于Python_OpenCv设置图像的ROI区域

#coding = utf-8
#======================================================================================================
#文件说明:
#       使用OpenCv——python设置图像的ROI区域
#开发环境:
#       IDLE+PYTHON2.7+UBUNTU14.04+CAFFE
#时间地点:
#       陕西师范大学 11.16
#作    者:
#       九月
#======================================================================================================
import cv2                                     #[1]导入OpenCv开源库
import numpy as np
image_path = "/home/wei/caffe/examples/myself/image/cat.jpg"
srcImg     = cv2.imread(image_path)            #[2]将图片加载到内存    
cv2.namedWindow("[srcImg]",cv2.WINDOW_AUTOSIZE)#[3]创建显示窗口
cv2.imshow("[srcImg]",srcImg)                  #[4]在刚才创建的显示窗口中显示刚在加载的图片

#========================================================================================================
#模块说明:
#       由于OpenCv中,imread()函数读进来的图片,其本质上就是一个三维的数组,这个NumPy中的三维数组是一致的,所以设置图片的
#   ROI区域的问题,就转换成数组的切片问题,在Python中,数组就是一个列表序列,所以使用列表的切片就可以完成ROI区域的设置
#========================================================================================================

img_roi_y      = 200                           #[1]设置ROI区域的左上角的起点
img_roi_x      = 200                           
img_roi_height = 100                           #[2]设置ROI区域的高度
img_roi_width  = 200                           #[3]设置ROI区域的宽度

img_roi        = srcImg[img_roi_y:(img_roi_y+img_roi_height),img_roi_x:(img_roi_x+img_roi_width)] 

cv2.namedWindow("[ROI_Img]",cv2.WINDOW_AUTOSIZE)
cv2.imshow("[ROI_Img]",img_roi)
cv2.imwrite("/home/wei/caffe/examples/myself/image/cat_ROI.jpg",img_roi)
cv2.waitKey(0)
cv2.destroyWindow("[srcImg]")                  #[4]注意:这一点和C++编程中,是有区别的,C++中是不需要手动销毁窗口的
cv2.destroyWindow("[ROI_Img]")                 #[5]python中,创建的窗口,需要手动的销毁

是的,你可以使用Halcon中的矩形ROI线。以下是一个示例代码,展示如何使用矩形ROI线: ```python import halcon as h # 导入图像 image = h.read_image('path/to/image.jpg') # 创建一个图形窗口 h.open_window(0, 0, 512, 512, 'Line Detection') # 显示原始图像 h.display(image) # 创建一个矩形ROI h.set_color(h.get_window(), 'red') h.set_draw(h.get_window(), 'margin') h.set_line_width(h.get_window(), 2) h.draw_rectangle2(h.get_window(), 100, 100, 200, 200, 0.0) # 提取ROI区域 roi = h.gen_rectangle2(100, 100, 200, 200, 0.0) image_roi = h.crop_rectangle2(image, roi) # 预处理ROI图像 image_gray = h.rgb1_to_gray(image_roi) image_thresholded = h.threshold(image_gray, 'auto') # 边缘检测 edges = h.edges_image(image_thresholded, 'canny', 1.0, 20) # 线检测 lines = h.gen_contours_skeleton_xld(edges, 'lines_circles', 'none', 5, 1, 20) # 显示结果 h.display_line_image(image) h.disp_obj(lines) # 关闭窗口 h.close_window() ``` 在这个示例中,我们首先创建了一个图形窗口,并在窗口中绘制了一个红色的矩形ROI。然后,我们从原始图像中提取出ROI区域,并对ROI图像进行预处理和边缘检测。最后,我们使用`disp_obj`函数显示检测到的线。 请注意,此示例仅演示了如何使用矩形ROI线,具体的参数设置和算法选择可能需要根据实际情况进行调整。根据你的需求,你可能需要进一步处理和筛选检测到的线段。 希望这个示例对你有帮助!如果有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值