日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV中图像水平拼接函数hconcat的使用

發布時間:2024/9/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV中图像水平拼接函数hconcat的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OPenCV版本:4.4

IDE:VS2019

功能描述

對給定的矩陣應用進行水平連接。

函數垂直連接兩個或更多的cv::Mat矩陣 (具有相同的行數)。

函數原型1

CV_EXPORTS void hconcat(const Mat* src, size_t nsrc, OutputArray dst);

參數描述

  • @參數 src 輸入矩陣或矩陣向量.所有的矩陣必須具有相同的行數和相同的深度。
  • @參數 nsrc src中的矩陣個數.
  • @參數 dst 輸出矩陣.它和src具有相同的行數和深度。并且列數等于src列數總和.
  • @參考

? cv::vconcat(const Mat*, size_t, OutputArray),

? cv::vconcat(InputArrayOfArrays, OutputArray)

? cv::vconcat(InputArray, InputArray, OutputArray)

示例代碼

cv::Mat matArray[] = { cv::Mat(4, 1, CV_8UC1, cv::Scalar(1)),cv::Mat(4, 1, CV_8UC1, cv::Scalar(2)),cv::Mat(4, 1, CV_8UC1, cv::Scalar(3)),}; cv::Mat out; cv::hconcat( matArray, 3, out ); //out: //[1, 2, 3; // 1, 2, 3; // 1, 2, 3; // 1, 2, 3]

函數原型2

CV_EXPORTS void hconcat(InputArray src1, InputArray src2, OutputArray dst);

參數描述

  • 參數 src1 水平連接的第一個輸入矩陣.
  • 參數 src2 水平連接的第二個輸入矩陣.
  • 參數 dst 輸出矩陣. 它和 src1 、src2具有相同的行數和深度,它的列數與src和src2的列數的總和相同。

示例代碼

cv::Mat_<float> A = (cv::Mat_<float>(3, 2) << 1, 4,2, 5,3, 6); cv::Mat_<float> B = (cv::Mat_<float>(3, 2) << 7, 10,8, 11,9, 12); cv::Mat C; cv::hconcat(A, B, C); //C: //[1, 4, 7, 10; // 2, 5, 8, 11; // 3, 6, 9, 12]

函數原型3

CV_EXPORTS_W void hconcat(InputArrayOfArrays src, OutputArray dst);

參數描述

  • 參數 src 輸入矩陣的數組. 所有的矩陣必須具有相同的列數和深度。

  • 參數 ds t輸出矩陣. 和src的行數和深度相同,列數等于src所有矩陣列數的總和.

示例代碼

std::vector<cv::Mat> matrices = { cv::Mat(4, 1, CV_8UC1, cv::Scalar(1)),cv::Mat(4, 1, CV_8UC1, cv::Scalar(2)),cv::Mat(4, 1, CV_8UC1, cv::Scalar(3)),}; cv::Mat out; cv::hconcat( matrices, out ); //out: //[1, 2, 3; // 1, 2, 3; // 1, 2, 3; // 1, 2, 3]

源代碼示例:

把兩張圖片水平連接成一張圖片

#include <iostream> #include <opencv2/opencv.hpp> #include <vector>int main() {cv::Mat image = cv::imread("d:\\opencvtest\\images\\juice_small.png");cv::Mat image2 = cv::imread("d:\\opencvtest\\images\\juice2_small.png");cv::Mat output;cv::hconcat(image, image2, output);cv::imshow("hcontact", output);cv::waitKey(0);return 0; }

原圖1:
原圖2:

運行結果圖:

把多張圖像水平連接成一張圖片:

#include <iostream> #include <opencv2/opencv.hpp> #include <vector>int main() {cv::Mat image = cv::imread("d:\\opencvtest\\images\\juice_small.png");cv::Mat image2 = cv::imread("d:\\opencvtest\\images\\juice2_small.png");std::vector<cv::Mat> images;images.push_back(image);images.push_back(image2);images.push_back(image);cv::Mat output2;cv::hconcat(images, output2);cv::imshow("hcontact2", output2);cv::waitKey(0);return 0; }

運行結果:

總結

以上是生活随笔為你收集整理的OpenCV中图像水平拼接函数hconcat的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。