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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV2:幼儿园篇 第一章 创建图像并显示

發(fā)布時(shí)間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV2:幼儿园篇 第一章 创建图像并显示 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.簡(jiǎn)介

相當(dāng)于在PS中,新建一個(gè)畫(huà)布

cv::Mat 類(lèi)和 lplimage / cvMat結(jié)構(gòu)體都可以表示一張圖像

?

二.構(gòu)造函數(shù)創(chuàng)建圖像

// 創(chuàng)建一個(gè)空矩陣 cv::Mat image1;// 創(chuàng)建一個(gè)6行6列的8位1通道的矩陣 cv::Mat image2(6, 6, CV_8UC1);// 創(chuàng)建一個(gè)7行7列的8位3通道的矩陣 cv::Mat image3(cv::Size(7, 7), CV_8UC3); cv::Mat image4(8, 8, CV_32FC2, cv::Scalar(1, 3)); cv::Mat image4(10, 8, CV_8UC1, cv::Scalar(5));cv::Mat image5(cv::Size(9, 9), CV_8UC3, cv::Scalar(1, 2, 3));cv::Mat image6(image2);

?

?

三.create()創(chuàng)建圖像

Mat m(2,2,CV_8UC3); m.create(3,2,CV_8UC2);

?

?

五.單窗口顯示多張圖像

cv::resize()? //圖像縮放

cv::showManyImages()? //顯示多張圖像

?

#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>using namespace cv;void showManyImages(const std::vector<cv::Mat>& srcImages, cv::Size imgSize) {int nNumImages = srcImages.size();cv::Size nSizeWindows;if(nNumImages > 12){std::cout << "Not more than 12 images!" << std::endl;return ;}// 根據(jù)圖片序列數(shù)量來(lái)確定分割小窗口形態(tài)switch(nNumImages){case 1: nSizeWindows = cv::Size(1,1);break;case 2: nSizeWindows = cv::Size(2,1);break;case 3:case 4: nSizeWindows = cv::Size(2,2);break;case 5: case 6: nSizeWindows = cv::Size(3,2);break;case 7:case 8: nSizeWindows = cv::Size(4,2);break;case 9: nSizeWindows = cv::Size(3,3);break;default: nSizeWindows = cv::Size(4,3);break;}// 設(shè)置小圖像尺寸 間隙 邊界int nShowImageSize = 200;int nSplitLineSize = 15;int nAroundLineSize = 50;// 創(chuàng)建輸出圖像 圖像大小根據(jù)輸入源確定const int imagesHeight = nShowImageSize * nSizeWindows.width + nAroundLineSize + (nSizeWindows.width - 1) * nSplitLineSize;const int imagesWidth = nShowImageSize * nSizeWindows.height + nAroundLineSize + (nSizeWindows.height - 1) * nSplitLineSize;std::cout << imagesWidth << " " << imagesHeight <<std::endl;cv::Mat showWindowImages(imagesWidth, imagesHeight, CV_8UC3, cv::Scalar(0, 0, 0));//提取對(duì)應(yīng)小圖像的左上角坐標(biāo)X Yint posX = (showWindowImages.cols - (nShowImageSize * nSizeWindows.width + (nSizeWindows.width - 1) * nSplitLineSize))/2;int posY = (showWindowImages.rows - (nShowImageSize * nSizeWindows.height + (nSizeWindows.height - 1) * nSplitLineSize)) / 2;std::cout << posX << " " << posY << std::endl;int tempPosX = posX;int tempPosY = posY;// 將每一小幅圖像整合成大圖像for (int i = 0; i < nNumImages; i++){// 小圖像坐標(biāo)轉(zhuǎn)換if((i % nSizeWindows.width == 0) && (tempPosX != posX)){tempPosX = posX;tempPosY += (nSplitLineSize + nShowImageSize);}// 利用Rect區(qū)域?qū)⑿D像置于大圖像相應(yīng)區(qū)域cv::Mat tempImage = showWindowImages(cv::Rect(tempPosX, tempPosY, nShowImageSize, nShowImageSize));//利用resize函數(shù)實(shí)現(xiàn)圖像縮放resize(srcImages[i], tempImage, cv::Size(nShowImageSize, nShowImageSize));tempPosX += (nSplitLineSize + nShowImageSize);}cv::imshow("showWindowImages", showWindowImages); }int main() {// 圖像源輸入std::vector<cv::Mat> srcImages(9);srcImages[0] = cv::imread("a.jpg");srcImages[1] = cv::imread("a.jpg");srcImages[2] = cv::imread("a.jpg");srcImages[3] = cv::imread("a.jpg");srcImages[4] = cv::imread("a.jpg");srcImages[5] = cv::imread("a.jpg");srcImages[6] = cv::imread("a.jpg");srcImages[7] = cv::imread("a.jpg");srcImages[8] = cv::imread("a.jpg");// 判斷當(dāng)前vector讀入的正確性for (int i = 0; i < srcImages.size(); i++){if (!srcImages[i].data){std::cout << "read error!" << std::endl;return -1;}}//調(diào)用單窗口顯示圖像showManyImages(srcImages, cv::Size(512, 400));cv::waitKey(0);return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/k5bg/p/11076766.html

與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的OpenCV2:幼儿园篇 第一章 创建图像并显示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。