精华内容
下载资源
问答
  • OpenCV 截取图片

    千次阅读 2013-09-24 10:09:25
    截取图片。 void GetImageRect(IplImage* orgImage, CvRect rectInImage, IplImage* imgRect) { //从图像orgImage中提取一块(rectInImage)子图像imgRect IplImage *result=imgRect; CvSize size; size.width=...
    截取图片。
    
    void GetImageRect(IplImage* orgImage, CvRect rectInImage, IplImage* imgRect)
    {
    //从图像orgImage中提取一块(rectInImage)子图像imgRect
    IplImage *result=imgRect;
    CvSize size;
    size.width=rectInImage.width;
    size.height=rectInImage.height;
    //result=cvCreateImage( size, orgImage->depth, orgImage->nChannels );
    //从图像中提取子图像
    cvSetImageROI(orgImage,rectInImage);
    cvCopy(orgImage,result);
    cvResetImageROI(orgImage);
    }


    展开全文
  • 这篇博客将介绍如何使用Python,OpenCV截取图片ROI(Regions Of Interests,即我们感兴趣的部分)。 图像在OpenCV中表现为Numpy数组,因此可以很轻松的使用数组切片来截取ROI; roi = image[startY:endY, startX:...

    这篇博客将介绍如何使用Python,OpenCV截取图片ROI(Regions Of Interests,即我们感兴趣的部分)。

    图像在OpenCV中表现为Numpy数组,因此可以很轻松的使用数组切片来截取ROI;
    roi = image[startY:endY, startX:endX],只要提供开始和结束(x,y)坐标的顺序,就可以轻松地使用OpenCV裁剪图像!

    1. 效果图

    原图 VS face1 VS face2 效果图如下:
    在这里插入图片描述

    2. 步骤

    2.1 环境配置

    opencv安装可参考

    pip install opencv-contrib-python

    2.2 原理

    OpenCV将图像表示为NumPy数组,高度第一(行数),宽度第二(列数)。

    roi = image[startY:endY, startX:endX]

    3. 源码

    # USAGE
    # python opencv_crop.py --image ymzyt.jpg
    
    # 导入必要的包
    import argparse
    
    import cv2
    
    # 构建命令行参数及机械
    # --image 磁盘图片路径,默认名称为当前py文件同级目录:fjdh.jpg
    ap = argparse.ArgumentParser()
    ap.add_argument("-i", "--image", type=str, default="fjdh.jpg",
                    help="path to the input image")
    args = vars(ap.parse_args())
    
    # 从磁盘加载图片,并展示
    image = cv2.imread(args["image"])
    cv2.imshow("Original", image)
    
    # 截取面部区域,可通过Photoshop,GIMP, Paint等获取面部区域的坐标
    # roi = image[startY:endY, startX:endX]
    face = image[85:250, 85:220]
    cv2.imshow("Face", face)
    cv2.waitKey(0)
    
    # 应用另一个裁剪,提取另一张脸
    body = image[90:450, 0:290]
    cv2.imshow("Body", body)
    cv2.waitKey(0)
    

    参考

    展开全文
  • Opencv截取图片里最大的矩形 1.代码 #include <opencv2/opencv.hpp> #include <iostream> #include<time.h> #include<math.h> #include <iostream> #include <set> using ...

    Opencv截取图片里最大的矩形

    1.代码

    
    #include <opencv2/opencv.hpp>  
    #include <iostream>  
    #include<time.h>
    #include<math.h>
    #include <iostream>  
    #include <set>
    using namespace cv;
    using namespace std;
    
    RNG rng(12345);
    char strangerName[2000];//截取的四边形矩形图片名字
    int main()
    {
        Mat srcImageCopy= imread("D:\\vedio\\1.png", 2|4);
        Mat srcImageCopy1= imread("D:\\vedio\\1.png", 2|4);
        Mat srcImage0 = imread("D:\\vedio\\1.png", 0);  
        Mat srcImage = Mat::zeros(srcImage0.rows,srcImage0.cols, CV_8UC3); 
        resize(srcImage0, srcImage, srcImage.size());
        threshold(srcImage,srcImage,150,255,THRESH_BINARY);
        imshow("二值化", srcImage);
        //getStructuringElement函数会返回指定形状和尺寸的结构元素
        Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));
        //morphologyEx(srcImage, srcImage, MORPH_CLOSE, element);//闭运算滤波
        vector<vector<Point>> contours, RectContours,contoursMax;//轮廓,为点向量,
        findContours(srcImage, contours, RETR_LIST, CHAIN_APPROX_NONE);//找轮廓
        vector<vector<Point>> hull(contours.size());//用于存放凸包
        Mat drawing(srcImage.size(), CV_8UC3, cv::Scalar(0));
        int i = 0;
        int num[100];
        int sum = 0;
        double Length=0;
        vector<float> length(contours.size());//用于保存每个轮廓的长度
        vector<float> Area_contours(contours.size()), Area_hull(contours.size()), Rectangularity(contours.size()), circularity(contours.size());
        for (i = 0; i < contours.size(); i++)
        {//把所有的轮廓画出来
            Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
            length[i] = arcLength(contours[i], true);//轮廓的长度
            
            if (length[i] > 200)
            {//通过长度匹配滤除小轮廓
             if (length[i]>=Length)
             {
                convexHull(Mat(contours[i]), hull[i], false);//把凸包找出来,寻找凸包函数
                Area_contours[i] = contourArea(contours[i]);   //轮廓面积
                Area_hull[i] = contourArea(hull[i]);           //凸包面积
                Rectangularity[i] = Area_contours[i] / Area_hull[i]; //矩形度
                if (Rectangularity[i] > 0.85)
                {
                    //通过矩形度和圆形度滤除数字 
                    //Length = arcLength(contours[i], true);
                    num [sum]= i;
                    if (sum > 0)
                    {
                        if (arcLength(contours[num[sum]], true)> arcLength(contours[num[sum-1]], true))
                        {
                            Length = arcLength(contours[i], true);
                            sum++;
                        }        
                    }
                    else 
                    {
                        Length = arcLength(contours[i], true);
                        sum++;
                    }           
                    drawContours(drawing, hull, i, color, 1);
                    drawContours(srcImageCopy, hull, i, color, 1); //得到四边形
                }
            }
            }
        }
        if ((sum - 1 )> 0) 
        {
         RectContours.push_back(hull[num[sum - 1]]);//把提取出来的方框导入到新的轮廓组
        }
        else 
        {
            cout << "无匹配";
            return 0;
        }
        imshow("原图",srcImageCopy);
      
        // 多边形逼近轮廓 + 获取矩形和圆形边界框
        vector<vector<Point> > contours_poly(RectContours.size());
        vector<Rect> boundRect(RectContours.size()); //最小矩形
     
        //一个循环,遍历所有部分,进行本程序最核心的操作
        for (unsigned int i = 0; i < RectContours.size(); i++)
        {
            approxPolyDP(RectContours[i], contours_poly[i], 3, true);//用指定精度逼近多边形曲线 
            boundRect[i] = boundingRect(Mat(contours_poly[i]));//计算点集的最外面(up-right)矩形边界
        }
        // 绘制多边形轮廓 + 包围的矩形框 
        Mat drawing1 = Mat::zeros(srcImage.size(), CV_8UC3);
        Mat image_cut[100];      //从img中按照rect进行切割,此时修改image_cut时image中对应部分也会修改,因此需要copy  
        Mat image_copy[100];   //clone函数创建新的图片 
        int geshu = 0;
        for (int unsigned i = 0; i < RectContours.size(); i++)
        {
            Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));//随机设置颜色
            Point text_lb;//中点
            geshu++;
            rectangle(drawing, boundRect[i].tl(), boundRect[i].br(), color, 2, 8, 0);//绘制矩形
            text_lb = Point((boundRect[i].tl().x + boundRect[i].br().x) * 0.5, (boundRect[i].tl().y + boundRect[i].br().y) * 0.5);
            //putTextZH(drawing, "中点", center[i], Scalar(0, 0, 255), 10, "Arial");
            int width = abs(boundRect[i].tl().x - boundRect[i].br().x);
            int height = abs(boundRect[i].tl().y - boundRect[i].br().y);
            Rect rect(boundRect[i].tl().x+35, boundRect[i].tl().y+35, width-70, height-70);   //创建一个Rect框,属于cv中的类,四个参数代表x,y,width,height  
            image_cut[i] = Mat(srcImageCopy1, rect);      //从img中按照rect进行切割,此时修改image_cut时image中对应部分也会修改,因此需要copy  
            image_copy[i] = image_cut[i].clone();   //clone函数创建新的图片  
            sprintf_s(strangerName, "数字%d", geshu);
            namedWindow(strangerName, WINDOW_AUTOSIZE);//参数为零,则可以自由拖动strangerName
            imshow(strangerName, image_copy[i]);
        }
        namedWindow("找到四边形外接矩形", 1);
        imshow("找到四边形外接矩形", drawing);
        waitKey(0);
        return 0;
    }
    
    
    

    2效果

    原图:
    原图二值化:
    二值化截取图:
    截取图完整工程项目代码:https://download.csdn.net/download/m0_45866718/12819697

    展开全文
  • java调用opencv利用霍夫圆定位查找印章,并返回质心坐标和半径以达到截取印章的目的
  • opencv 截取

    对于图像的截取的方式很多都是对 IplImage* img 这种格式的进行操作的。


    1.对cvMat操作其实非常的简单:

    Mat image= imreadimag);

    Rect rect(10, 20, 100, 50);

    Mat image_roi = image(rect);

    这个需要注意的是: 这种操作实际上是引用的。也就是说,你对image_roi的操作,实际上也是对image上面对应的区域在操作


    另外:srcImage(rect).copyTo(roiImage)也可以达到同样的效果!


    2.IplImage* img 从图里面截取矩形的操作一般是这个样子的:

    CvSize size= cvSize(40,50);//区域大小
     cvSetImageROI(pSrc,cvRect(60,70,size.width, size.height));//设置源图像ROI
     IplImage* pDest = cvCreateImage(size,pSrc->depth,pSrc->nChannels);//创建目标图像
     cvCopy(pSrc,pDest); //复制图像
     cvResetImageROI(pDest);//源图像用完后,清空ROI
     cvSaveImage("Roi.jpg",pDest);//保存目标图像

    3. 查阅资料发现,还可以对于任意的区域进行截取:可以参照:http://blog.csdn.net/wuxiaoyao12/article/details/7305865

    简单说来是这样的:就是加入了鼠标事件然后存储鼠标事件的画出的区域。


    展开全文
  • import cv2 img = cv2.imread('selectROI_1.jpg') ...r = cv2.selectROI('cv2.selectROI', img, True, False) roi = img[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])] cv2.imshow('roi', roi) ...
  • I have a part of image and I want to shift it down say by 25 pixels like shown in the picture.I have mask of the region I want to shift down. The total image size should not change....
  • opencv截取图片并保存

    2014-02-27 16:24:59
    #include "cv.h" #include "highgui.h" #include "stdio.h" int main() ... src=cvLoadImage("F:\\张存柱\\桌面\\匹配\\采集图片\\123\\IMG_0138.JPG",1); cvSetImageROI(src,cvRect(2000,1000,2048,2048
  • opencv截取图片的某一部分的信息

    千次阅读 2019-03-29 10:10:36
    已知一张图片宽为1024,高为768. img = img[80:550, 430:650]; 80~550代表取得的高度范围。 430~650代表取得的宽度范围。
  • Python opencv 截取视频图片并保存 # coding=utf-8 import os import cv2 videos_src_path = r".\vedio\\" #视频地址 frames_save_path = r".\picture\\" #保存图片地址 width = 810 height = 985 time_interval = ...
  • opencv截取视频图片保存

    千次阅读 2017-10-08 17:51:50
    #include <opencv2/opencv.hpp> #include using namespace std; using namespace cv; int main() { VideoCapture capture("E:\\videos\\bdb.mp4"); //设置开始帧() int frameToStart = 0; //设
  • 直接上代码 #-*- encoding:utf8 -*- ...import cv2 ##加载OpenCV模块 import pdb def video2frames(pathIn='', pathOut='', imgname='', only_output_video_info = False, extract_time_points = N
  • 基于opencv截取图像

    2016-01-12 09:54:56
    基于VS2010和opencv的C++代码,可以实现对图像的截取并保存
  • python-opencv截取并显示图片区域

    千次阅读 2020-05-15 23:15:03
    目标效果: 代码: ...pts1=np.float32([[245,75],[380,80],[215,230],[365,230]]) #截取对片中的哪个区域 pts2=np.float32([[0,0],[width,0],[0,height],[width,height]]) #定义显示的卡片的坐标 ma
  • opencv 截取图像

    千次阅读 2019-03-22 16:14:59
    opencv 截取图像 方法1: cv::Rect face; face.x = 0; face.y = 0; face.width = 10; face.height = 10; cv::Mat frame = cv::imread("1.jpg"); cv::Mat facesROI // 此处也该保护一下,防止超出边界 ...
  • 近段时间需要采集图片进行网络训练,所以就开车出去采集了几段视频,然后运用opencv截取视频中的任意帧,并保存为图片。因为整段视频会有一些问题,所以不想随机截取,我使用人工按键来进行判断是否需要采集,这样就...
  • 软件 2013,环境 opencv2,使用:截取图像某一区域,利用rect函数对图片进行截取
  • 利用Python-OpenCv截取视频帧

    千次阅读 2019-02-25 15:06:10
    使用Python编程,用OpenCv截取视频帧,并保存为图片。 代码示例一:截取视频中每一帧图片 import cv2 import os # 利用VideoCapture捕获视频,这里使用本地视频 cap = cv2.VideoCapture("shipin") # ...
  • Python+opencv裁剪/截取图片的几种方式

    万次阅读 多人点赞 2021-04-29 11:56:49
    文章目录前言一、手动单张裁剪/截取二、根据图片的位置坐标进行裁剪/截取三、opencv获取边缘并根据bounding box截取/裁剪目标四、用YOLO目标检测框裁剪并批量保存总结 前言 在计算机视觉任务中,如图像分类,图像...
  • 首先使用opencv读取图片。 img = cv2.imread(os.path.join(path, img_name)) # imread后面括号中的为图片的具体地址 用opencv读取的图片,可以理解为以numpy数组显示,所以很多操作可以通用。 img.shape = (900,...
  • Opencv鼠标截取图片场景

    千次阅读 2015-08-30 21:03:24
    #include<opencv2/opencv.hpp> #define WINDOW_NAME "鼠标事件窗口" using namespace std; using namespace cv; Rect g_rectangle, g_endrect; bool g_bDrawingBox = false; RNG g_rng(12345); int _flag = 2; ...
  • OpenCV截取一段视频

    2019-08-20 10:28:13
    Opencv--读取视频帧的几种方法 #include "opencv2/opencv.hpp" using namespace cv;... VideoCapture cap("E:\\图片\\视频材料\\AVSEQ01.avi");// open the default camera if(!cap.isOpened()) // chec...
  • opencv截取视频帧并保存为图片

    千次阅读 2018-09-10 18:16:07
    #include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;io.h&gt; #include &...opencv2/opencv.hpp&gt; using namespace
  • OpenCv截取任意形状 -- 实例

    千次阅读 2019-06-12 00:07:02
    OpenCV实例: 在图中按下鼠标画一个任意形状的区域,右击截取该区域内的图像,其中copyTo函数可根据掩码提取图片内容。 #include "pch.h" #include<iostream> #include<opencv2\opencv.hpp> using ...
  • opencv 截取轮廓中的图像——实现PS中的抠图功能 Opencv extract area circled by contour https://blog.csdn.net/sac761/article/details/51926853 opencv 截取轮廓中的图像——实现PS中利用蒙版抠图的功能...
  • Opencv对图像进行切割,响应鼠标,可以切任意的多边形。
  • OpenCV截取图像ROI并保存于指定路径

    千次阅读 2017-11-17 21:43:46
    OpenCV截取图像ROI并保存于指定路径 原创 2014年11月24日 15:39:33 标签: OpenCV / ROI / 保存指定路径 / 截图 / 4453

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,947
精华内容 2,378
关键字:

opencv截取图片