opencv使用小技巧

来源:互联网 发布:燕郊招聘网络推广专员 编辑:程序博客网 时间:2024/05/20 15:40

opencv使用小技巧

1.OpenCV把一个图像的一小块区域拷贝到另一个图像的指定区域:

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

(1)

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

(2)

    IplImage* img = cvLoadImage("c:\\lh.jpg",0);          CvRect roi =cvRect(6, 6, 48, 48);       cvSetImageROI(img, roi);      cvResetImageROI(img);      cvWaitKey(-1);     // cvReleaseImage(&img);     // cvDestroyAllWindows();   

cvMat操作如下:

Mat image= imread (E:\\imag);Rect rect(10, 20, 100, 50);//要取的目标区域坐标和长宽Mat image_roi = image(rect);//另外: srcImage(rect).copyTo(roiImage)也可以达到同样的效果!

2. 多张分割图片写入(本地保存)

        static int inc = 0;    char namestr[256];    sprintf_s(namestr, "%d.jpg", inc++);    imshow(namestr, char_img);    imwrite(namestr, char_img);

3.imread读取图片的几种方式

/-- 1 --双右斜线法//string imgpath = "C:\\Users\\bingbuyu\\Pictures\\photo\\miao1.jpg";//-- 2 --双左斜线法//string imgpath = "C://Users//bingbuyu//Pictures//photo//miao1.jpg";//-- 3 --单左斜线法//string imgpath = "C:/Users/bingbuyu/Pictures/photo/miao1.jpg";//-- 4 --以上三种混合法//string imgpath = "C:/Users//bingbuyu\\Pictures//photo//miao1.jpg";//-- 5 --相对路径法//string imgpath = "miao.jpg";//-- 6 --命令行参数法string imgpath = argv[1];img = imread(imgpath, 1);imshow("img", img);

4.opencv imread(),imwrite(),imshow()使用细节:

#include<cv.h>#include<highgui.h>using namespace cv;int main(){    Mat image=imread("D:/1.jpg",1);//读取一张RGB彩色图片    //检测是够成功加载图片,防止读取图片失败    if (!image.data)    {        printf("No image data \n");        return -1;    }    imwrite("E:\\input\\Gray_image.jpg",gray_image);//注意不要只写路径,还要写上文件名及图片格式,细节害死人    namedWindow("imageName",CV_WINDOW_AUTOSIZE);    namedWindow("Gray image",CV_WINDOW_AUTOSIZE);    imshow("imageName",image);    imshow("Gray image",gray_image);    waitKey(0);//配合imshow不然显示不出图片    return 0;}
0 0