精华内容
下载资源
问答
  • Qt:Opencv翻转图像

    2018-08-29 13:26:00
    /* 1、src,输入矩阵 * 2、dst,翻转后矩阵,类型与src一致 * 3、翻转模式,flipCode==0垂直翻转(沿X轴翻转),flipCode>0水平翻转(沿Y轴翻转),flipCode水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180...

    修正:转换出来的图片颜色不对劲,必须处理:

        /*图片的显示主要问题还是在于QImage与Mat格式的不同,
         * 其中QImage是RGB排列,而Mat 是 BGR,同时两者
         * 格式包含的内容页不同,因此需要经过转换才能够显示。
        */

     

    1、建立一个GUI工程,基类选择QMainWindows,类名不变,选中"界面创建"

    2、打开UI编辑器,拖动一个label,两个PushButton到界面上。

    cff2d4f3c5d73e040895d1fcb45417ed711.jpg

    3、添加opencv支持,在.pro文件的最下方:

    INCLUDEPATH += E:/software/opencv-3.4.2/build/install/include/opencv \
     E:/software/opencv-3.4.2/build/install/include/opencv2 \
     E:/software/opencv-3.4.2/build/install/include
    
     LIBS += -L E:/software/opencv-3.4.2/build/install/x86/mingw/bin/libopencv_*.dll
    

    4、mainWindow.h中添加必要的头文件以及定义一个Mat对象

    #include <cv.h>
    #include <highgui.h>
    #include <QFileDialog>   //文件操作支持
    #include <opencv2/opencv.hpp>  //image
    
    using namespace cv;
    
    
    
    
    
    
    private:
          Mat image ;

    5、mainWindow.cpp中,

    对于构造函数,添加:

        ui->label->resize(300, 300);  //重设画布大小
        ui->reversePushButton->setEnabled(false);  //没有打开图像时, 翻转图像按钮设置为不能点击

     

    两个按钮的槽函数

    
    void MainWindow::on_openPushButton_clicked()
    {
        //打开图像,获取图像名称
        QString filename = QFileDialog::getOpenFileName(this,
                                                            tr("open image"),
                                                            ".",
                                                            tr("Image file(*.png *.jpg *.bmp)"));
        /*
         * QString QFileDialog::getOpenFileName (
              QWidget * parent = 0,
              const QString & caption = QString(),
              const QString & dir = QString(),
              const QString & filter = QString(),
              QString * selectedFilter = 0,
              Options options = 0 )
        * 1、this:指定父组件, 当前为MainWindow  QWidget * parent = 0,
        * 2、tr("open image"),对话框的标题  const QString & caption = QString(),
        * 3、 ".":  是对话框显示时默认打开的目录,"." 代表程序运行目录,"/" 代表当前盘符的根目录(Windows,Linux下/就是根目录了),也可以是平台相关的,比如"C:\\"等;
             例如我想打开程序运行目录下的Data文件夹作为默认打开路径,这里应该写成"./Data/",若想有一个默认选中的文件,则在目录后添加文件名即可:"./Data/teaser.graph"
            const QString & dir = QString(),
        * 4、filter,是对话框的后缀名过滤器,比如我们使用"Image Files(*.jpg *.png)"就让它只能显示后缀名是jpg或者png的文件。如果需要使用多个过滤器,使用";;"分割,
         比如"JPEG Files(*.jpg);;PNG Files(*.png)";const QString & filter = QString(),
        * 第五个参数selectedFilter,是默认选择的过滤器;
        * 第六个参数options,是对话框的一些参数设定,比如只显示文件夹等等,它的取值是enum QFileDialog::Option,每个选项可以使用 | 运算组合起来。
        * 如果我要想选择多个文件怎么办呢?Qt提供了getOpenFileNames()函数,其返回值是一个QStringList。你可以把它理解成一个只能存放QString的List,也就是STL中的list<string>。
        */
        image = imread(filename.toLocal8Bit().data());
        /*
         *  Mat imread(const String& filename,int flags = IMREAD_COLOR);
         * 1、 返回Mat对象
         * 2、参数filename: 待打开图片的绝对地址,并不是所有文件都可以用它打开;函数识别不是依靠文件的后缀名,而是依靠内容的编码格式;
         *    imread读取数据时会重新排列数据。
         * 3、 参数flags:打开的参数。它可以指导将原图读取时进行一定的转换
         *
         * toLocal8Bit:是将QString以自己正确的编码方式读取并转换成编译器编码方式的字节流,而string本身就是字节流没有编码方式
       */
    
        QImage img = QImage((const unsigned char*)(image.data),
                                image.cols, image.rows, QImage::Format_RGB888);
        /*
         * QImage 在像素级别上对图像进行操作
         * QImage在IO操作中有很快的速度,并且给出了访问像素的接口
        */
        img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
        //让图像适应QLabel,否则只显示一部分
        ui->label->setPixmap(QPixmap::fromImage(img));
        if(image.data)
        {
            ui->reversePushButton->setEnabled(true);
        }
    }
    
    void MainWindow::on_reversePushButton_clicked()
    {
        flip(image, image, 0);
        /* 1、src,输入矩阵
         * 2、dst,翻转后矩阵,类型与src一致
         * 3、翻转模式,flipCode==0垂直翻转(沿X轴翻转),flipCode>0水平翻转(沿Y轴翻转),flipCode<0水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)
        */
        QImage img = QImage((const unsigned char*)(image.data),
                                image.cols, image.rows, QImage::Format_RGB888);\
        img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
        ui->label->clear();
        ui->label->setPixmap(QPixmap::fromImage(img));
    
    }
    

     

    展开全文
  • # 使用OpenCV翻转图像(水平、垂直、水平垂直) # USAGE # python opencv_flip.py # 导入必要的包 import argparse import cv2 # 构建命令行参数及解析 # --image 输入图像路径 ap = argparse....
  • opencv图像翻转

    2021-03-17 21:39:56
    os.chdir("E:\\code\opencv\\2.几何变换\\") from imutils import * image = imread("test.jpg") show(image) # 水平翻转 image = imread("test.jpg") image = cv2.flip(image,1) show(image) # 垂直翻转 image...
    import os
    os.chdir("E:\\code\opencv\\2.几何变换\\")
    from imutils import *
    
    image = imread("test.jpg")
    show(image)
    

    在这里插入图片描述

    # 水平翻转
    image = imread("test.jpg")
    image = cv2.flip(image,1)
    show(image)
    

    在这里插入图片描述

    # 垂直翻转
    image = imread("test.jpg")
    image = cv2.flip(image,0)
    show(image)
    

    在这里插入图片描述

    # 水平+垂直翻转
    image = imread("test.jpg")
    image = cv2.flip(image,-1)
    show(image)
    ``![在这里插入图片描述](https://img-blog.csdnimg.cn/20210317214055395.png)
    `
    
    
    展开全文
  • Opencv图像翻转

    2020-03-12 15:38:42
    图像翻转 代码 cv::Mat image = cv::imread("/Users/admin/Desktop/Lena.jpg"); cv::Mat image_fliped; // >0: 沿y轴翻转, 0: 沿x轴翻转, <0: x、y轴同时翻转 cv::flip(image, image_fliped, -1); cv::imshow...

    需求

    图像翻转

    代码

    cv::Mat image = cv::imread("/Users/admin/Desktop/Lena.jpg");
    cv::Mat image_fliped;
    // >0: 沿y轴翻转, 0: 沿x轴翻转, <0: x、y轴同时翻转
    cv::flip(image, image_fliped, -1);
    
    cv::imshow("lenna", image);
    cv::imshow("fliped lenna", image_fliped);
    
    cv::waitKey(0);
    return 0;
    
    展开全文
  • OpenCV图像翻转和图像Resize

    千次阅读 2019-04-15 14:23:31
    OpenCV图像翻转和图像Resize差值1.图像翻转2.图像Resize3.完整代码 1.图像翻转 图像翻转的本质就是像素值得映射,OpenCV提供了API flip来翻转图像,有三种翻转方式: void flip(InputArray src, //输入 ...

    OpenCV图像翻转和图像Resize

    1.图像翻转

    图像翻转的本质就是像素值得映射,OpenCV提供了API flip来翻转图像,有三种翻转方式:

    void flip(InputArray src, //输入
    		  OutputArray dst, //输出
    	      int flipCode);//旋转方式 
    

    代码实践:

    	Mat result_x, result_y, result_xy;
    
    	//沿x轴翻转
    	flip(input_image, result_x, 0);
    	imshow("result_x", result_x);
    
    	//沿y轴翻转
    	flip(input_image, result_y, 1);
    	imshow("result_y", result_y);
    
    	//沿xy对角线翻转
    	flip(input_image, result_xy, -1);
    	imshow("result_xy", result_xy);
    

    结果:
    flip_result

    2.图像Resize

    图像插值是从图像低分辨率图像生成高分辨率图像的过程中插值以恢复图像中所丢失的信息,即补全图像放缩所丢失的信息。
    常见的四种插值方法:

    • 近邻插值:INTER_NEAREST
    • 线性插值:INTER_LINEAR
    • 立方插值:INTER_CUBIC
    • 卢卡斯插值:INTER_LANCZOS

    OpenCV提供了resize():

    void resize( InputArray src, OutputArray dst,
                 Size dsize, double fx = 0, double fy = 0,
                 int interpolation = INTER_LINEAR );
    

    代码实践:

    	int height = input_image.rows;
    	int width = input_image.cols;
    	float fx = 0.0, fy = 0.0;
    
    	Mat result = Mat::zeros(input_image.size(), input_image.type());
    
    	resize(input_image, result, Size(width * 2, height * 2), fx = 0, fy = 0, INTER_NEAREST);
    	imshow("INTER_NEAREST", result);
    
    	resize(input_image, result, Size(width * 2, height * 2), fx = 0, fy = 0, INTER_LINEAR);
    	imshow("INTER_LINEAR", result);
    
    	resize(input_image, result, Size(width * 2, height * 2), fx = 0, fy = 0, INTER_CUBIC);
    	imshow("INTER_CUBIC", result);
    
    	resize(input_image, result, Size(width * 2, height * 2), fx = 0, fy = 0, INTER_LANCZOS4);
    	imshow("INTER_LANCZOS4", result);
    

    3.完整代码

    #include<opencv2/opencv.hpp>
    #include<iostream>
    //#include<Windows.h>
    
    using namespace cv;
    using namespace std;
    
    int main(int argc, char**argv)
    {
    	//get input image
    	Mat input_image = imread("./whisper.jpg", 1);
    	if (input_image.empty())
    	{
    		cout << "read input error!" << endl;
    		return -1;
    	}
    	imshow("input", input_image);
    #if 0
    	Mat result_x, result_y, result_xy;
    
    	//沿x轴翻转
    	flip(input_image, result_x, 0);
    	imshow("result_x", result_x);
    
    	//沿y轴翻转
    	flip(input_image, result_y, 1);
    	imshow("result_y", result_y);
    
    	//沿xy对角线翻转
    	flip(input_image, result_xy, -1);
    	imshow("result_xy", result_xy);
    #endif
    
    	int height = input_image.rows;
    	int width = input_image.cols;
    	float fx = 0.0, fy = 0.0;
    
    	Mat result = Mat::zeros(input_image.size(), input_image.type());
    
    	resize(input_image, result, Size(width * 2, height * 2), fx = 0, fy = 0, INTER_NEAREST);
    	imshow("INTER_NEAREST", result);
    
    	resize(input_image, result, Size(width * 2, height * 2), fx = 0, fy = 0, INTER_LINEAR);
    	imshow("INTER_LINEAR", result);
    
    	resize(input_image, result, Size(width * 2, height * 2), fx = 0, fy = 0, INTER_CUBIC);
    	imshow("INTER_CUBIC", result);
    
    	resize(input_image, result, Size(width * 2, height * 2), fx = 0, fy = 0, INTER_LANCZOS4);
    	imshow("INTER_LANCZOS4", result);
    
    
    	waitKey(0);
    	destroyAllWindows();
    	//system("pause");
    	return 0;
    }
    
    展开全文
  • OpenCV图像翻转

    千次阅读 2018-05-21 10:15:49
    https://blog.csdn.net/Kelvin_Yan/article/details/49755313矩阵(图像)镜像(翻转)cv::flip[cpp] view plain copyvoid flip(InputArray src, OutputArray dst, int...类型与src一致flipCode,翻转模式,f...
  • Opencv 图像翻转源代码

    2010-12-05 10:07:17
    里面具有Opencv关于如何让将图像进行水平和竖直翻转的源代码
  • OpenCV图片翻转

    千次阅读 2018-11-29 12:06:49
    OpenCV系列教程》 项目位置: OpenCV-Sample 代码位置: 10-ImageFilp.py import cv2 img = cv2.imread('./res/mini.jpeg') imgH = cv2.flip(img, 1) imgV = cv2.flip(img, 0) imgHV = cv2.flip(img, -1) cv...
  • Python opencv镜像翻转

    2021-04-29 09:30:41
    用于指定镜像翻转的类型,其中0表示绕×轴正直翻转,即垂直镜像翻转;1表示绕y轴翻转,即水平镜像翻转;-1表示绕×轴、y轴两个轴翻转,即对角镜像翻转。 参数3 可选参数。用于设置输出数组,即镜像翻转后的图像数据...
  • OPENCV 图像翻转

    千次阅读 2014-01-09 16:04:19
    环境:OPENCV2.4.6+VS2012 算法: 将摄入图像的左半边进行翻转,同时根据喜剧效果,将未翻转翻转的图像合成到一副图像上 想法来源: WIN32: 源图像 翻转图像 ...
  • python openCV flip翻转函数

    千次阅读 2019-04-26 14:02:15
    python 图像翻转,使用openCV flip()方法翻转 改变flip()第二个参数可以改变翻转的情况。 horizontal = cv2.flip(img,1,dst=None) #水平镜像, vertical = cv2.flip(img,0,dst=None) #垂直镜像 cr...
  • python-opencv图像翻转

    2019-12-02 19:51:03
    self.btn = QPushButton('翻转') self.btn.clicked.connect(self.turn) self.Vbox = QVBoxLayout() self.Vbox.addWidget(self.imgLabel) self.Vbox.addWidget(self.btn) self.setLayout(self.Vbox) def ...
  • 有时从摄像头获取的图像不是自己想要的方位,而又不想或者不能调整相机的位置时,我们就需要通过如软件来调整图像的朝向。详见:http://blog.csdn.net/fightingforcv/article/details/38983697
  • Opencv-图像翻转

    2019-09-08 14:31:52
    图像翻转的本质像素映射,OpenCV支持三种图像翻转方式 X轴翻转,flipcode = 0 Y轴翻转, flipcode = 1 XY轴翻转, flipcode = -1 相关的API:flip src输入参数 dst 翻转后图像 flipcode python代码 import cv2 as ...
  • OpenCV之图像翻转

    2021-07-15 15:55:24
    python代码: import cv2 as cv import numpy as np src = cv.imread("./test.png") cv.namedWindow("input", cv.WINDOW_AUTOSIZE) cv.imshow("input", src) # X Flip 倒影 dst1 = cv.flip(src, 0);...
  • opencv中有多个图像翻转函数应用到SSD和yolov3中的数据增强模块里,例如左右翻转,上下翻转,水平垂直翻转。在opencv里最常用的图像翻转函数是cv2.flip,其中有一个参数flipCode=1表示水平翻转,flipCode=0表示...
  • opencv 图像翻转、旋转

    万次阅读 2013-06-27 16:59:20
    opencv中并没有直接封装图像旋转任意角度的函数,一般我们可以使用仿射变换获得旋转后的图像,这时候可以进行任意角度的旋转,但是如果我们需要将图像旋转90度,例如只是对图像进行左右翻转,或者旋转90度将图像放倒...
  • opencv学习——左右翻转摄像头 VideoCapture video; video.open(0); 一般我们使用上面的代码打开摄像头后,屏幕里的视频图像不是镜像的,为了实现镜像的效果,可以使用下面的方法,将每一帧的图像左右翻转过来 //...
  • 基于OpenCV的图像翻转和镜像.zip
  • 主要为大家详细介绍了Java OpenCV实现图像镜像翻转效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • OpenCV图像翻转:flip()函数的使用

    千次阅读 2020-11-04 17:02:37
    OpenCV图像翻转:flip()函数的使用 功能描述 flip()函数翻转一个二维的矩阵,包含垂直翻转,水平翻转,以及垂直水平翻转, 函数 cv::flip 以以下三种方式之一翻转矩阵(行和列索引从0开始): 函数使用示例...
  • OpenCV实现图像翻转

    2016-01-16 10:11:41
    OpenCV实现图像翻转 2010-09-13 19:49 今天在实时处理图像采集卡采集的图像时,发现直接将图像采集卡采集的图像cvShowImage出来的是反着的图像,也就是图像采集卡采集的图像是以左下角为原点的,而窗口显示...
  • import cv2 img = cv2.imread("./image/Texture_8Bit.png") if img is None: exit() temp = img.copy() cv2.circle(temp, (100,50), 3, (0, 0, 255), 4) cv2.imwrite("1.jpg", temp) hh,ww,c = img.shape ...
  • opencv 图像垂直翻转

    2020-10-09 21:07:43
    import cv2 import glob _dir = glob.glob('./*.jpg') n = 0 for i in _... new_img) else: cv2.imwrite('./r/'+str(n)+'.jpg', img) n += 1 此代码为将一个文件夹下的所有图像都转换为宽大于高的图像,也就是垂直翻转
  • 通过键盘按键1,2,3,4在四种重映射方式之间切换,将图片进行旋转或者翻转~ 程序的核心函数为OpenCV中的remap。 博文《【OpenCV入门教程之十七】OpenCV重映射 & SURF特征点检测合辑》的配套详细注释源代码之一。 ...
  • OpenCV 4.1.0 图像翻转用(C++代码演示):倒影(垂直翻转)、镜像(水平翻转)、对角翻转(垂直+水平)。 编程环境:OpenCV 4.1.0 + Visual Studio 2017

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,314
精华内容 2,925
关键字:

opencv翻转