首页 > 其他分享 >19、Opencv4.4的仿射矩阵处理

19、Opencv4.4的仿射矩阵处理

时间:2022-09-28 11:07:31浏览次数:52  
标签:仿射 CMAKE matrix 23 19 Opencv4.4 33 include Eigen


基本思想:深入学习一下仿射矩阵的使用和分解 环境 window10+Mingw32+Opencv4.4.0+Eigen

这里仅说明一下Eigen库的导入方法,

首先去Eigen官网下载Eigen源码,解压导入Clion工程中,修改CMakeLists.txt, 配置Opencv4.4.0

 

19、Opencv4.4的仿射矩阵处理_d3

试一下Reflect about origin的方法

CMakeLists.txt

cmake_minimum_required(VERSION 3.17)
project(untitled6)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 ")
set(CMAKE_CXX_STANDARD 11)
set(OpenCV_DIR "D:\\Opencv440\\buildMinGW")#改为mingw-bulid的位置
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
find_package(OpenCV REQUIRED)
include_directories(${CMAKE_SOURCE_DIR}/eigen-3.3.8)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(untitled6 main.cpp )
target_link_libraries(untitled6 ${OpenCV_LIBS} )
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)

code

#include <iostream>
#include <Eigen/Dense>

#include <opencv2/core/eigen.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace Eigen;
using namespace std;
int main()
{
Mat image = imread("F:\\1.jpg");

Mat warp_mat(2, 3, CV_32FC1);
Mat invwarp_mat(2, 3, CV_32FC1);
Eigen::Matrix<double, 3, 3,RowMajor> matrix_33,invmatrix_33;

matrix_33<<1, 0, 0,
0, -3, 300,
0,0,1;
Eigen::Matrix<double, 2, 3,RowMajor> matrix_23,invmatrix_23;
matrix_23=matrix_33.block<2,3>(0,0);
eigen2cv(matrix_23 ,warp_mat);
cout<<warp_mat<<endl;
Mat destMat;
warpAffine(image, destMat, warp_mat, image.size());
//完成,显示和保存图像
imshow("dest", destMat);

invmatrix_33=matrix_33.inverse();
invmatrix_23=invmatrix_33.block<2,3>(0,0);
eigen2cv(invmatrix_23 ,invwarp_mat);
cout<<invwarp_mat<<endl;

warpAffine(image, destMat, invwarp_mat, image.size());
imshow("invdest", destMat);
waitKey(0);
return 0;
}

工程的文件的结构

ubuntu@DESKTOP-L50FRR6:/mnt/f/untitled3$ tree -L 1
.
├── CMakeLists.txt
├── cmake-build-debug
├── eigen-3.3.8
└── main.cpp

2 directories, 2 files

结果图

19、Opencv4.4的仿射矩阵处理_d3_02

19、Opencv4.4的仿射矩阵处理_d3_03

越来越喜欢eigen 基本的仿射原理 请查看其它博客;这里只是记录一下~

标签:仿射,CMAKE,matrix,23,19,Opencv4.4,33,include,Eigen
From: https://blog.51cto.com/u_12504263/5718733

相关文章

  • 14、OpenCV4.4进行区域的相交比计算
    基本思想:进行两个区域的相交比计算  #include<opencv2/opencv.hpp>#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<iostream>using......
  • 13、OpenCV4.4 仿射变换
    Parameters:src–Coordinatesoftriangleverticesinthesourceimage.dst–Coordinatesofthecorrespondingtriangleverticesinthedestinationimage.Thefunc......
  • 9、OpenCV4.4 色彩抽出
    色彩的空间变换#-*-coding:utf-8-*-importcv2importnumpyasnporiginal=cv2.imread('1.jpg',1)img=original.copy()#副本dst=np.zeros(img.shape,np.uint8)#......
  • BUUCTF web 第一题[极客大挑战 2019]EasySQL
    BUUCTFweb第一题sql注入之万能密码[极客大挑战2019]EasySQL✔解题方法1.判断类型为:有回显、字符型sql注入当输入343、343)、343’‘、343’‘)当输入343‘时当......
  • 19. 排序和搜索功能
    1.前言NumPy提供了多种排序函数,这些排序函数可以实现不同的排序算法。排序算法特征主要体现在以下四个方面:执行速度,最坏情况下的复杂度,所需的工作空间以及算法的稳定性......
  • [CSP-S2019] Emiya 家今天的饭
    P5664CSP-S2019Emiya家今天的饭容斥原理+DP答案=没有限制3的答案-∑某一列不满足性质3的答案,记号:行表示方案,纵表示食材第2类:不满足性质3的只有一种列(必须>k/2......
  • lc19 removeNthFromEnd(node) 链表删除
    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]classSolu......
  • 代码随想录day4 ● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ●
    24.两两交换链表中的节点   1classSolution{2public:3ListNode*swapPairs(ListNode*head){4//创建虚拟头结点5ListNode......
  • 【luogu P6419】Kamp(换根DP)
    Kamp题目链接:luoguP6419题目大意一棵树上有一些点有人,边有通过的长度,然后对于每个点,你从这个点出发经过所有人(不用回到原来位置)的最短时间。其它人不会动,只有你去找人......
  • winserver2019 域迁移的思路
    忘记DS还原密码“开始”--“运行”输入:ntdsutil.exec:\windows\system32\ntdsutil.exe:setdsrmpassword重置DSRM管理员密码:resetpasswordonserverwindows2请键入DS......